Как добавить существующий продукт в счета как вложенные атрибуты в Rails?

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

Как эта картинка, я думаю, для примера: изображение

ОБНОВИТЬ

Накладная.рб

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

Товар.rb

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

🤔 А знаете ли вы, что...
JavaScript можно использовать для создания ботов и автоматизации задач в браузерах с помощью Puppeteer.


1
131
1

Ответ:

Решено

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

Модель: В ваших моделях необходимо указать accepts_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