Ruby on rails 如何使用唯一ID动态创建嵌套资源?

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

我有一个使用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_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一样。但是我必须用手来做。