繰り返しの部分テンプレートを使う場合、each文でまわすか、collectionオプションを使うか2つの方法があります。
/controller
class Admin::StaffEventsController < ApplicationController
def index
if params[:staff_member_id]
@staff_member = StaffMember.find(params[:staff_member_id])
@staff_events = @staff_member.staff_events.order(occurred_at: :desc)
else
@staff_events = StaffEvent.order(occurred_at: :desc)
end
@staff_events = @staff_events.page(params[:page])
end
end
①each文を使用するパターン
<% @staff_events.each do |staff_event| %>
<%= render partial: 'staff_event', staff_event: staff_event %>
<% end %>
この3行は1行でまとめることができます。
②collectionオプションを使用するパターン
<%= render partial: "staff_event", collection: @staff_events %>
collectionにはインスタンスを指定しています。
さらに、
呼び出す部分テンプレートのviewsフォルダ内にあるフォルダ名、部分テンプレート名、部分テンプレート内で使う変数名が共通している場合はさらに簡略化して書けます。
<%= render @staff_events %>
どちらでも書けますが、
②の方が処理速度が早いため基本的には②を使用します。