LoginSignup
1

More than 3 years have passed since last update.

Rails、Slimでflashメッセージがうまくだせない

Last updated at Posted at 2019-10-12

Slimで新規登録に成功したらフラッシュメッセージを表示してindexに戻りたいのに次のように書いたらエラーが出る。

classを書かずにやると素テキストで成功メッセージが出るのでコントローラー側は大丈夫なはず。

app/controllers/blogs_controller.rb
  def create
    @blog = Blog.create(blog_params)
    redirect_to blogs_path
    flash[:success] = 'add success'
  end
index.html.slim
= flash[:success], class: 'alert alert-primary'
h1 Blog articles

= link_to '新規登録', new_blog_path, class: 'btn btn-primary'

- @blogs.each do |blog|
  br
  = blog.id
  br
  = blog.title
  br
  = blog.article

error

syntax error, unexpected ':' ..._safe((flash[:success], class : 'alert alert-primary'))).to_... ... ^


いろいろぐぐり、試行錯誤した。
classの書き方が違っていた。
link_toのクラスの書き方が、「class: 'btn btn-primary'」だったから同じだと思っていたが違うみたい。

ネットでいろいろぐぐったけど、Slimでflashのclassの書き方の参考が見つけられなかった。
これでエラーが取れたけど、ずっとフラッシュの緑枠がある。

  .alert.alert-success
    = flash[:success]

h1 Blog articles

勘違いしていた。if文を入れないと常にフラッシュが出てしまう。
flashでるときだけ値をコントローラーから勝手に渡してくれるような気がしていた。
if文を書く。
これでOK。

- if flash[:success]
  .alert.alert-success
    = flash[:success]

h1 Blog articles

参考サイト
redirect_to使った時にBootstrap対応のフラッシュメッセージを表示させる - Qiita

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

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
1