У меня проблемы с созданием правильного синтаксиса form_with для создания записи для has_many посредством ассоциации, и я не могу найти пример для копирования.
В моей модели есть фабрика.Фабрики могут иметь оборудование.Оборудование может иметь много вариантов оборудования.Вариации относятся к конкретному типу оборудования, но различаются для каждого конкретного элемента оборудования (поэтому VariationType связан с EquipmentType)
Я могу создать фабрику (например, localhost / factory / 1). Я могусоздать оборудование на заводе (например, localhost / factory / 1 / equipment / 1)
Но мне не удается создать форму, которая создает Варианты оборудования.То есть, когда я перехожу к localhost / factory / 1 / equipment / 1, мне нужна форма для добавления Вариантов Equipment в эту запись Equipment.
Вот мой код:
rout.rb
resources :factories do
resources :equipment do
resources :equipment_variations
end
end
resources :equipment_types do
resources :variation_types
end
Models
class Factory < ApplicationRecord
has_many :equipment
end
class Equipment < ApplicationRecord
belongs_to :factory
belongs_to :equipment_type
has_many :equipment_variations
has_many :variation_types, through: :equipment_variations
end
class EquipmentVariation < ApplicationRecord
belongs_to :equipment
belongs_to :variation_type
end
class VariationType < ApplicationRecord
belongs_to :equipment_type
has_many :equipment_variations
has_many :equipment, through: :equipment_variations
end
И представление в app / views / equipment / show.html.erb
<h1><%= @equipment.equipment_type.name %></h1>
<h3>Add Variation</h3>
<%= form_with(model: [@equipment, VariationType.new], url: factory_equipment_equipment_variations_path, local: true) do |form| %>
<%= form.submit %>
<% end %>
Это настолько близко, насколько мне удалось, но выдает ошибку: Нет совпадений маршрутов {: action => "index",: controller => "equipment_variations",:factory_id => "2",: id => "3"}, пропущены обязательные ключи: [: equipment_id]
В основном мне нужно иметь возможность публиковать сообщения на URL / factory / 1 / equipment / 1/ equipment_variations со страницы в / фабрики / 1 / оборудование / 1.Для этого указан маршрут factory_equipment_equipment_variations, поэтому я указал это в параметре url, но я считаю, что должен быть более простой способ добиться этого.Как должны выглядеть параметры form_with?