コレクションを大まかに次のようにレンダリングするページがあります。
index.html.haml
= render partial: 'cars_list', as: :this_car, collection: @cars
_cars_list.html.haml
編集: _cars_list には、個々の車に関するその他の情報があります。
%h3 Look at these Cars!
%ul
%li Something about this car
%li car.description
%div
= render partial: 'calendars/calendar_stuff', locals: {car: this_car}
_calendar_stuff.html.haml
- if car.date == @date
%div
= car.date
_cars_contoller.rb
def index
@cars = Car.all
@date = params[:date] ? Date.parse(params[:date]) : Date.today
end
カレンダー関連のパーシャルで何が起こるかというと、それthis_car
は常に車のコレクションの最初の車です。つまり、同じ日付が何度も印刷されます。
ロジックをパーシャルに移動すると、_calendar_stuff
出力cars_list
結果が期待どおりに変更されます。
そのため、Rails はthis_car
、パーシャルをレンダリングするたびにローカル オブジェクトをネストされたパーシャルに渡していないようです。
誰かが理由を知っていますか?
PSコードを構造化すると
@cars.each do |car|
render 'cars_list', locals: {this_car: car}
end
私は同じ振る舞いをします。