Ruby on rails 如何使用唯一ID动态创建嵌套资源?
我有一个使用Spree的Ruby on rails 如何使用唯一ID动态创建嵌套资源?,ruby-on-rails,ruby-on-rails-4,spree,Ruby On Rails,Ruby On Rails 4,Spree,我有一个使用Spree的行\u项的嵌套表单。我已将一个票证对象附加到spree\u line\u项目。当我更新_属性时,只捕获姓氏,因为动态生成的输入id都是相同的 编辑:我指的是最后一张唱片。因此,如果有两个‘first_name’/‘last_name’组合,则只捕获第二个组合 行\u项目\u decorator.rb Spree::LineItem.class_eval do has_many :tickets, dependent: :destroy accepts_ne
行\u项的嵌套表单
。我已将一个票证对象附加到spree\u line\u项目
。当我更新_属性时,只捕获姓氏,因为动态生成的输入id都是相同的
编辑:我指的是最后一张唱片。因此,如果有两个‘first_name’/‘last_name’组合,则只捕获第二个组合
行\u项目\u decorator.rb
Spree::LineItem.class_eval do
has_many :tickets, dependent: :destroy
accepts_nested_attributes_for :tickets
end
Spree::Order.class_eval do
remove_checkout_step :registration
insert_checkout_step :tickets, :before => :address
end
票.rb
class Ticket < ActiveRecord::Base
belongs_to :line_item
end
order_decorator.rb
Spree::LineItem.class_eval do
has_many :tickets, dependent: :destroy
accepts_nested_attributes_for :tickets
end
Spree::Order.class_eval do
remove_checkout_step :registration
insert_checkout_step :tickets, :before => :address
end
tickets.html.erb
<table>
<%= form_for :line_item do |line_item_form| %>
<% @order.line_items.each do |line_item| %>
For <%= line_item.start_date %>, provide the names for your <%= line_item.quantity %> <%= line_item.name %> <%= line_item.variant.option_values.first.presentation %> tickets:
<% (1..line_item.quantity).each do %>
<%= line_item_form.fields_for :tickets do |ticket_fields| %>
<tr>
<td class="line_item_ticket">
<%= ticket_fields.label :first_name %>
<%= ticket_fields.text_field :first_name %>
</td>
<td class="line_item_ticket">
<%= ticket_fields.label :last_name %>
<%= ticket_fields.text_field :last_name %>
</td>
</tr>
<% end -%>
<% end -%>
<% end %>
<% end %>
</table>
对于,请提供车票的名称:
是否“当我更新属性时,只捕获姓氏”意味着只保存最后的“名字”和“姓氏”?或者你是说只保存“姓氏”吗?哦!很好,只保存最后一条记录。最后的“first_name”和“last_name”。我没有使用Spree,因此我不知道它是否会自动为您执行此操作(如果没有,则可能是原因)。但通常,对于嵌套属性,您必须确保在控制器中构建嵌套模型X次,其中X是您希望能够保存的嵌套模型数。例如:“10.times{@line_item.tickets.build}”将出现在控制器的新操作中。你可能想确认Spree实际上是在动态地构建一张新的罚单。我想你是对的。出于某种原因,我认为这是从rails端自动创建的,就像项目任务Bates railscast一样。但是我必须用手来做。