我有一個大致呈現一個集這樣的頁面:傳遞一個局部變量到嵌套部分
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
傳遞到嵌套的部分中。
有誰知道爲什麼?
P.S.如果我的代碼結構爲
@cars.each do |car|
render 'cars_list', locals: {this_car: car}
end
我得到相同的行爲。
試了一下,BU t仍然具有相同的行爲。幾件事情:1)'index.html.haml'文件中'partial:'是必須的,因爲我也使用了collection:參數。我相信你只能用'= render'cars_list''這樣的東西來放棄它。 2)單車局部變量車在'cars_list.html.haml'文件中效果很好,但是當我將它傳遞給'_calendar_stuff'時,它總是傳入集合中的第一個'car',而不是迭代器中的當前車。 – bknoles
我之前使用過沒有'partial'關鍵字的'collection',但是如果你發現問題出現,如果你不發表它,通過一切手段繼續使用它。 –
看看我對我的答案所做的修改是否適合你。 –