rails のrenderにローカル引数を渡す時の注意
renderを使っていて、ローカル引数が渡せなかったので、忘れないために書いておきます。
_form.html.slim
= form_for(user) do |f| = f.text_field :name = f.submit
new.html.slim
render 'form', locals: { user: @user } →undefined local variable or method `user' for
なんで、そんなことが起きるのかというと、locals
を書く場合は、partial
を書かないといけないようです。
render partial: 'form', { user: @user }
そもそもpartialを書くのがめんどくさい場合は、下記のようにも書けます。
render 'form', { user: @user }
こういう動きをしているので、hashのkey
がないから、エラーになっているのかなと思いました。
= render { 'application/common/unfollow' }, locals: { user: object.user }
参考:Rails partial locals not working - Stack Overflow
英語のサイトで調べる場合は、not working
って使うのがいいって最近わかりました。