17
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

railsでflashを使ってサクセス・エラーメッセージを表示する

Last updated at Posted at 2017-08-17

仕様書

  • 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="投稿">
17
19
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
17
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?