Как получить доступ к полю формы внутри fields_for от частичного с коллекцией? - PullRequest
0 голосов
/ 09 апреля 2020

Я знаю, это звучит запутанно (и это так), поэтому позвольте мне объяснить. Прежде всего, это не мой код, поэтому я думаю, что было бы слишком медленно кодировать его снова другим способом.

Контекст: это форма проверки Spree, и в представлении корзины я могу применить купоны на текущую корзину. Однако количество товара изменяется через числовое поле только в представлении. Это означает, что мне нужно обновить корзину перед применением купона, в противном случае он будет считаться только как один товар, даже если я поставлю 10 как количество. Проблема в том, что я не знаю, как получить доступ к этому полю, чтобы обновить количество (Spree :: Order.find (this_order) .line_items.find (this_line_item) .quantity).

Важные части представления выглядят так:

<%= form_for @order, url: update_cart_path, html: { id: 'update-cart' } do |order_form| %>
  <%= render partial: 'form', locals: { order_form: order_form } %>
    # Inside _form partial:
    <%= render partial: 'spree/orders/line_item',
          collection: order_form.object.line_items,
          locals: { order_form: order_form } %>
      # Inside _line_item partial:
      <%= order_form.fields_for :line_items, line_item do |item_form| %>
        <%= item_form.number_field :quantity,
              min: 1,
              class: "form-control line_item_quantity",
              id: "quantity"+ variant.id.to_s,
              size: 5 %>

Как вы можете видеть, есть форма form_for, которая рендерит частичку, которая рендерит другую частичку с коллекцией, внутри которой есть fields_form. В отображаемом HTML поле появляется с именем order[line_items_attributes][0][quantity], но когда я делаю params[:order].inspect, оно не показывает :line_items_attributes или что-либо связанное с этим полем. Как я могу получить доступ к этому значению из контроллера заказов?

Спасибо.

...