いつもお世話になっております。
現在RailsでWebページを作成しております。
フォームを送信し、エラーがなかったら、notice: 'success'を渡しながらリダイレクトを行い、画面上部に3秒間ほど「保存しました」を表示するsnackbar_show()を呼び出すという流れのページについてです。
一度保存を行った後に、更新ボタンを押すと、当然URLが「xxxxx/xxxxx/config?notice=success」となっているため、snackbar_show()が呼ばれ、実際には保存していないにもかかわらず「保存しました」が表示されています。
これを回避するにはどのような手法をとるのが一般的でしょうか。
リダイレクト時にURLに混ぜずに「notice: 'success'」のような変数を渡すことができれと思っているのですが……。
その他別の手法でも構いませんので、ご教示いただけますと幸いです。
よろしくお願いいたします。
Ruby
1 2コントローラー側 3#configs_controller.rb 4 5 def change 6 ・ 7 ・ (省略) 8 ・ 9 # エラーがあるかどうかによって表示を変更 10 if is_error 11 render "configs/show" 12 else 13 redirect_to controller: 'configs', action: 'show', notice: 'success' 14 end 15 end 16 17ビュー側 18#show.html.erb 19<%= form_with(model: @userinfo, local: true, url: {controller: "configs", action: "change"}, 20 html: {id: 'inform_save', class: 'form', autocomplete: 'off'}) do |f| %> 21 22#省略 23 24<% end %> 25 26<% if params[:notice] == "success" %> 27 <!-- 画面上部に3秒間「保存しました」を表示 --> 28 <script>snackbar_show();</script> 29<% end %> 30
回答1件
あなたの回答
tips
プレビュー