1
所以我實施了一個黑客,我想知道什麼是「正確」的方式來做到這一點。PARAMS的順序停止* _attributes =從工作
的問題是,我有一個使用實例變量的*_attributes=()
方法。這是一個問題,原因是在調用該方法時,該實例變量尚未設置。這是問題的方法:
def proposed_times_attributes=(attributes)
attributes.each do |key,value|
value[:timezone] = timezone
end
assign_nested_attributes_for_collection_association(:proposed_times, attributes)
end
的時區是在params哈希表proposed_times_attributes
後。因此,我的破解是從params中刪除它,然後將其添加回來,從而將它移動到行的末尾。
def create
p = params[:consultation]
a = p.delete(:proposed_times_attributes)
p[:proposed_times_attributes] = a
@consultation = current_user.advised_consultations.new(p)
...
end
什麼是正確的方法,我應該這樣做呢?
謝天謝地,我使用了Ruby 1.9.2,它能夠保持順序,但是知道如何做到這一點,這樣就不會取決於這個事實。