Rails to-doアプリ(Railscastのコード)のインデックスファイルには、タスクコントローラーのインスタンス変数に割り当てられた不完全なタスクと完了したタスクが一覧表示されます。パーシャルが呼び出されるだけであるのに対し、render@incomplete_tasksとrender@complete_tasksがどのように呼び出されるかに注意してください。
_task.html.erb
この1つの部分は、不完全なタスクと完全なタスクの両方をレンダリングするために使用されているようです。Railsはインスタンス変数の前半(つまり、@ incompleteと@complete)を無視して、両方をレンダリングするために1つのパーシャルを使用できますか?
コントローラ
def index
if current_user
@incomplete_tasks = current_user.tasks.where(complete: false)
@complete_tasks = current_user.tasks.where(complete: true)
end
end
索引
<% if @incomplete_tasks.empty? && @complete_tasks.empty? %>
<p>Currently no tasks. Add one above.</p>
<% else %>
<h2>Incomplete Tasks</h2>
<div class="tasks" id="incomplete_tasks">
<%= render @incomplete_tasks %>
</div>
<h2>Complete Tasks</h2>
<div class="tasks" id="complete_tasks">
<%= render @complete_tasks %>
</div>
<% end %>
_task.html.erb
<%= form_for task, remote: true do |f| %>
<%= f.check_box :complete %>
<%= f.label :complete, task.name %>
<%= link_to "(remove)", task, method: :delete, data: {confirm: "Are you sure?"}, remote: true %>
<% end %>