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