Как добавить существующий продукт в накладные как вложенные атрибуты в Rails? - PullRequest
0 голосов
/ 27 января 2019

Я читал о вложенных атрибутах в Rails, поэтому я нашел кокон драгоценных камней, у которого есть потребность в распределении формы для вложенных атрибутов и который может выполнять всю реализацию.Но я хочу попытаться добавить существующий продукт данных в форму счетов в виде вложенных атрибутов, выполнив поиск данных продукта с помощью cocoon.Что я должен сделать, чтобы выполнить взаимодействие с этими формами в Rails?

Как на картинке, я думаю, для примера: image

UPDATE

Invoice.rb

class Invoice < ApplicationRecord
  has_many :products, inverse_of: :invoice
  accepts_nested_attributes_for :ticket_details, reject_if: :all_blank, allow_destroy: true
end

Product.rb

class Product < ApplicationRecord
  belongs_to :category
  belongs_to :tax
  belongs_to :invoice
end

1 Ответ

0 голосов
/ 28 января 2019

Для использования вложенных атрибутов необходимо внести изменения в свои модели, представления и контроллеры:

Модель: В ваших моделях необходимо указать acceptpts_nested_attributes_for (В вашем случае измените ticket_details для продуктов)

class Invoice < ApplicationRecord
  has_many :products, inverse_of: :invoice
  accepts_nested_attributes_for :products, reject_if: :all_blank, allow_destroy: true
end

Просмотр: Используйте fields_for для создания параметра products_attributes

<%= form_for @invoice do |form| %>

  <div class="field">
    <%= form.label :name %>
    <%= form.text_field :name, id: :user_name %>
  </div>

  <%= form.fields_for :products, @invoice.products do |product| %>
    <%= product.text_field :name %>
  <% end %>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

Контроллер: Разрешить параметр products_attributes

def invoice_params
  params.require(:invoice).permit(:name, products_attributes: [:name, :id])
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...