將從Rails的另一個應用2到Rails 3 - 在我的意見我有這樣的代碼:fields_for在軌道3問題
def edit
@order = Order.find(params[:id],:include=>[{:orderitems=>:item_schedules}, :memberids ],:order=>"orderitems.updated_at DESC")
@active_order_iems = []
@inactive_order_items = []
@order.orderitems.each do |oi|
oi_active = nil
oi.item_schedules.each do |is|
if (is.end_date > Date.today)
oi_active =true
break
end
end
@active_order_iems << oi if !oi_active.nil?
@inactive_order_items << oi if oi_active.nil?
end
@commissions = @order.commissions.find(:all)
@ordertypes = Ordertype.find(:all, :order=>"description")
@salesreps = Salesrep.find(:all, :order=>"fullname")
@customers = Customer.find(:all, :order=>"company_name")
@memberids = Memberid.find_all_by_customer_id(@order.customer_id)
@products = Product.find(:all, :include=>[:items],:order=>["products.description"])
@partners = Partner.find(:all, :order=>"company_name")
end
def get_reps
@salesreps = Salesrep.find(:all,:order=>"fullname")
@commission = Commission.new
render :partial=>'commission'
end
:
<%fields_for "order[commission_attributes][]", commission do |f|%>
這是從下面的控制器操作驅動
在我的「秩序」模式,我再有這樣的:
def commission_attributes=(commission_attributes)
commission_attributes.each do |attributes|
if attributes[:id].blank?
commissions.build(attributes)
else
commission = commissions.detect{|t| t.id == attributes[:id].to_i}
commission.attributes = attributes
end
end
end
這個工程在軌道2,但是在軌道3我得到的錯誤如下:
@order[commission_attributes]' is not allowed as an instance variable name</code></pre>
我似乎無法弄清楚問題是什麼,或者如何解決這個問題..任何幫助是非常讚賞。
安德魯
我已經更新了主要問題,從控制器和模型的一些代碼..如果它有幫助嗎? – 2012-02-22 13:28:05
好的。我認爲'form.fields_for:佣金佣金_form |'是你需要的。看看它是如何工作的。作爲一個方面說明,這是一篇很好的文章,說明爲什麼讓控制器保持「瘦」的重要性:http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model。此外,請查看控制器的inherited_resources gem以及視圖的simple_form(或formtastic)gem。他們將大大簡化你想要做的事情。 – 2012-02-22 14:30:24
超棒的東西!那就做了訣竅..我將閱讀這篇文章,這個應用程序是我從別人身上取得的 - 如果我可以清理代碼並使其更容易理解,那麼我就進來了。謝謝再次爲您的幫助! – 2012-02-22 14:53:22