Railsのrenderでlocalsを使うとActionView::Template::Errorが起きる

Railsのrenderメソッドを呼び出す時にlocalsを使ってローカル変数を渡そうとした時、ActionView::Template::Errorで「dynamic constant assignment」とエラーが起きてしまった。


エラーが起きたlocalsの使い方は以下の通り。

render 'my_page', :locals => { Settings_title: Settings.title }

このようなエラーが起きた。

ActionView::Template::Error: /MyProjects/app/views/mypage.haml:1: dynamic constant assignment
...put_buffer;Settings_title = local_assigns[:Settings_site...
...                           ^

間違えてキーに大文字を指定していたことが原因だった。最初のコードの例はこのように書き換えたらOKだった。

render 'my_page', :locals => { settings_title: Settings.title }
Pocket
LINEで送る
LinkedIn にシェア