LoginSignup
3
3

More than 3 years have passed since last update.

railsでリダイレクトしない問題を解決

Posted at

はじめに

今回初めてform_withを使いrailsアプリを作った。

今まで通りアプリを作成していたが今回、今まで(form_for)で出てこなかった不具合があったので
form_withを使う時は
「こんなことになるのかな?」とこの記事に記録として残し、
近いうちにrails (5.2.3)でまた作るのでその時に同じことが起こるのか確認したい。

開発環境

  • ruby 2.5.1
  • Rails 5.2.3

今回起こったこと

今回起こったことは端的に言うとリダイレクトしないということです。

ruby.rb
def destroy
    binding.pry
    tweet = Tweet.find(params[:id])
    if tweet.user.id == current_user.id
      tweet.destroy
    end
    redirect_to tweets_path, notice:'投稿を削除しました'
end

binding.pryを仕込んで処理が間違いなくきてることが確認できているが
その先の
redirect_to tweets_path, notice:'投稿を削除しました'
が動かない

ページをリロードする処理が動く。

色々調べてみるとform_withが悪さをしていそう

form_withのデフォルトremote: true

調べてみるとform_withにはremote: trueと言うオプションがついている。

変更前

ruby.rb
= form_with(model: @tweet) do |form|

表示させるビューはこちら
スクリーンショット 2019-07-11 10.55.11.png

変更後

ruby.rb
= form_with(model: @tweet,data: { remote: false }) do |form|

表示させるビューはこちら
スクリーンショット 2019-07-11 10.56.10.png

これで正常に動きました。
エラーが出ないのに動かないのは原因が特定しずらく嫌ですね。

ちょうどturbolinksを削除した時だったので
「turbolinks消すとrails動かなくなるの!?」と混乱していまいましたが
原因がわかってよかったです。

まだform_withを使って全然コードかけてないので
これから知識を深めて行きたいです。

最後に

最後まで読んでいただきありがとうございました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3