仕様書
- flashを用いて登録が成功したかを次の画面で表示する
流れ
- controller.rbに@post.saveができたら成功のメッセージ、失敗したら失敗のメッセージをflash[:notice]に入れるようにする
- viewにもしflash[:notice]があったらそれを表示するようにする
- 失敗したら投稿フォームに戻り、投稿フォームに前入力してた値を初期値として出す。
controllerにsaveがされたかでflash[:notice]を振り分けて表示するようにする
posts_controller.rb
def create
@post = Post.new(content: params[:content])
if @post.save
flash[:notice] = "投稿を作成しました"
redirect_to("/posts/index")
else
render("posts/new")
end
end
viewにメッセージの表示
application.html.erb
<% if flash[:notice] %>
<div class="flash">
<%= flash[:notice] %>
</div>
<% end %>
もしflash[:notice]があった場合のみ発動。
もし失敗した場合、投稿ページに戻る。
new.html.rb
<% @post.errors.full_messages.each do |message| %>
<div class="form-error">
<%= message %>
</div>
<% end %>
<textarea name="content"><%= @post.content %></textarea>
<input type="submit" value="投稿">