Я читал о вложенных атрибутах в 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.
Для использования вложенные атрибуты вам необходимо внести изменения в ваши модели, представления и контроллеры:
Модель: В ваших моделях необходимо указать 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