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

railsguides.jp

英語のサイトで調べる場合は、not workingって使うのがいいって最近わかりました。