Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 字段为且已通过多个字段_Ruby On Rails_Has Many Through_Fields For - Fatal编程技术网

Ruby on rails 字段为且已通过多个字段

Ruby on rails 字段为且已通过多个字段,ruby-on-rails,has-many-through,fields-for,Ruby On Rails,Has Many Through,Fields For,我有这些模型: class Order < ActiveRecord::Base has_many :order_lines has_many :prizes, :through => :order_lines accepts_nested_attributes_for :order_lines end class Prize < ActiveRecord::Base has_many :order_lines end class OrderLine &

我有这些模型:

class Order < ActiveRecord::Base
  has_many :order_lines
  has_many :prizes, :through => :order_lines
  accepts_nested_attributes_for :order_lines
end

class Prize < ActiveRecord::Base
  has_many :order_lines  
end

class OrderLine < ActiveRecord::Base
  belongs_to :order
  belongs_to :prize
end

我想在订单中有一个嵌套的表单,显示每个奖品,旁边有一个文本框,用户可以在其中输入物品,例如订单金额。提交表单时,创建操作应相应地创建订单行。我到处都找不到解决办法

首先,在订单模型中,使用accepts\u嵌套的\u属性\u作为:奖品,而不是您拥有的

之后很容易,只需在视图中添加一个表单,就不需要额外的步骤控制器了

<%= form_for @order do |order_form| %>
  ..
  <%= order_form.fields_for :prizes do |prizes_form| %>
    <%= prizes_form.text_field :piece %>
    ..
  <% end %>
 ..
<% end %>

这是直接从文件

谢谢你的回复。进行此操作时,字段_不会遍历奖品。块中的代码根本不运行。代码正常运行,但可能不会显示任何内容,因为订单中没有任何奖励。如果要在订单表单中编辑和实例化奖品,应在控制器中添加@order.prives.build。查看更多信息,如果我执行@order.prices.build,我得到的只是块中的一个空奖品实例。只有在我有一对多协会的情况下,链接到RailsCasts才适用。这里的情况并非如此:-