我試圖運行這個..你如何通過fields_for傳遞選項?
- f.fields_for :referrals do |qf|
但我想通過這個,@organization.referrals.select{|ref|ref.new_record?}
爲好。這是因爲傳遞的表格只是新的對象,而不是舊的。
我試圖做到這一點..
- f.fields_for :referrals do |qf|
- if qf.object.new_record?
= render :partial => 'referral_fields', :locals => {:qf => qf}
這使得它在視圖中顯示正確,但PARAMS仍填充每一個先前創建的嵌套對象。
這使我相信我需要在fields_for語句中傳遞此選項。
我還試圖這樣:
- f.fields_for @organization.referrals.select{|ref|ref.new_record?} do |qf|
= render :partial => 'referral_fields', :locals => {:qf => qf}
除了這一點:
- f.fields_for :referrals, @organization.referrals.select{|ref|ref.new_record?} do |qf|
= render :partial => 'referral_fields', :locals => {:qf => qf}
第一個例子將顯示和只允許通過一個對象。在哪裏我的表單是允許動態數量的重複嵌套表單。
第二個會顯示並通過所有嵌套對象
應用信息
#organization.rb
has_many :referrals
accepts_nested_attributes_for :referrals, :reject_if => proc { |attributes| attributes.all? { |k, v| v.blank? } }, :allow_destroy => true
#referral.rb
belongs_to :organization
#referrals_controller.rb
def new
2.times { @organization.referrals.build }
....
def create
@referral = Referral.new(params[:referral])
if @referral.valid? && @organization.referrals << @referral
flash[:notice] = "Referrals saved."
redirect_to new_organization_referrals_path(@organization)
else
render :action => :new, :layout => 'manage'
end
end
不行不行。這顯示並將所有嵌套對象傳遞給params。 – Trip 2010-10-27 14:30:41
但是,非常感謝你;) – Trip 2010-10-27 14:45:16
你使用的是什麼版本的rails? – 2010-10-27 14:50:10