フォームに入力した値が不適切であった場合,flashでエラーメッセージを表示させたいのですが,redirect後にうまくflashの値が渡されていないようなのでコードをみて原因を教えていただきたいです.
①コードではうまくいくのですが,②コードではうまくいきません.
同じことを意味しているコードだと思うのですがなぜ②ではうまくいかないのでしょうか?
###①エラーおよび,入力していた値が表示されている(うまく狙い通り動作している)
flash[:board] = board #入力した値がリダイレクト後も消えないように入力した値を渡している flash[:error_messages] = board.errors.full_messages
###②うまくいかないパターン
flash = { board: board, error_messages: board.errors.full_messages }
###boards_controller
. . . def new @board = Board.new(flash[:board]) end def create board = Board.new(board_params) if board.save flash[:notice] = "「#{board.title}」の掲示板を作成しました" redirect_to board else flash = { board: board, error_messages: board.errors.full_messages } redirect_back(fallback_location: board) end end . . .
###_form.html.erb
<% if flash[:error_messages] %> <div class="alert alert-danger"> <ul> <% flash[:error_messages].each do |msg| %> <li><%= msg %></li> <% end %> <ul> </div> <% end %> <%= form_for board do |f| %> <div class="form-group"> <%= f.label :name, '名前' %> <%= f.text_field :name, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :title, 'タイトル' %> <%= f.text_field :title, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :body, '本文' %> <%= f.text_area :body, class: 'form-control', rows: 10 %> </div> <%= f.submit '保存', class: 'btn btn-primary' %> <% end %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/21 03:34