こんにちは!kossyです!
本日の気になったニュースはこちら
www.nhk.or.jp
最近暇なので情報収集のために月ー木まで毎日見ているのですが、
切り口が面白くて視聴が楽しみです。
今回の放送は終活に関してですが、
社会との繋がりを更に大事にして生きていこうと思いました、、、
さて、今回は一緒に使われがちなnew画面とedit画面のpartial時のエラーについて、
ブログに残してみたいと思います。
環境
Rails 5.0.7
Ruby 2.3.6
MacOS Mojave
Haml
状況
newアクションで表示する画面とeditで表示する画面がほとんど一緒で冗長なので、
_form.html.hamlとして共有したい
new.html.haml .d-flex.align-items-center %h1 新規作成 .ml-auto.boards__linkBox = link_to '一覧', root_path, class: 'btn btn-outline-dark' = render 'shared/form', locals: { board: @board } edit.html.haml .d-flex.align-items-center %h1 編集 .ml-auto.boards__linkBox = link_to '一覧', root_path, class: 'btn btn-outline-dark' = render 'shared/form', locals: { board: @board } _form.html.haml = form_for board do |f| .form-group = f.label :name, '名前' = f.text_field :name, class: 'form-control' .form-group = f.label :title, 'タイトル' = f.text_field :title, class: 'form-control' .form-group = f.label :body, '本文' = f.text_area :body, class: 'form-control', rows: 10 = f.submit '保存', class: 'btn btn-primary'
これでイケると思いましたが、ダメでした。
renderでローカル変数渡す時はpartial: を記載しないとダメっぽい
どうやら、
= render partial: 'shared/form', locals: { local: @local }
としないとエラーになるみたいです。
partial先を明示的に指定しないと、local変数がパーシャル先に渡らない仕様なんですかね、、、
ともあれ、上記のようにpartialを追記したら動くようになりました。