Railsでパーシャルを切り出すときはインスタンス変数をローカル変数にする
new.html.erb
<h1>新規タスク作成</h1> <%= form_for(@task) do |f| %> <% f.label :content, 'タスク' %> <% f.text_field :content %> <% f.submit '登録' %> <% end %> <%= link_to '一覧に戻る', tasks_path %>
edit.html.erb
<h1>タスク編集画面</h1> <p><%= @task.content %></p> <%= form_for(@task) do |f| %> <% f.label :content, 'タスク' %> <% f.text_field :content %> <% f.submit '登録' %> <% end %> <%= link_to '一覧に戻る', tasks_path %>
こういうのがあったときに、共通部分(フォーム周りのところ)をパーシャルにして切り出したい。
学んだこと
以下のようなパーシャルをつくる。
_form.html.erb
<%= form_for(task) do |f| %> <%= f.label :content, 'タスク' %> <%= f.text_field :content %> <%= f.submit '登録'%> <% end %>
new.html.erb
<h1>新規タスク作成</h1> <%= render 'form', task: @task %> <%= link_to '一覧に戻る', tasks_path %>
edit.html.erb
<h1>タスク編集画面</h1> <p><%= @task.content %></p> <%= render 'form', task: @task %> <%= link_to '一覧に戻る', tasks_path %>
ポイントは以下の通り。