Как Вы редактируете атрибуты модели соединения при использовании accepts_nested_attributes_for?
У меня есть 3 модели: к Темам и Статьям присоединяются Компоновщики
class Topic < ActiveRecord::Base
has_many :linkers
has_many :articles, :through => :linkers, :foreign_key => :article_id
accepts_nested_attributes_for :articles
end
class Article < ActiveRecord::Base
has_many :linkers
has_many :topics, :through => :linkers, :foreign_key => :topic_id
end
class Linker < ActiveRecord::Base
#this is the join model, has extra attributes like "relevance"
belongs_to :topic
belongs_to :article
end
Таким образом, когда я создаю статью в "новом" действии контроллера тем...
@topic.articles.build
... и сделайте вложенную форму в topics/new.html.erb...
<% form_for(@topic) do |topic_form| %>
...fields...
<% topic_form.fields_for :articles do |article_form| %>
...fields...
... Направляющие автоматически создают компоновщика, который является великим. Теперь для моего вопроса: модель My Linker также имеет атрибуты, что я хочу смочь изменить через "новую тему" форму. Но у компоновщика, которого автоматически создают направляющие, есть нулевые значения для всех его атрибутов кроме topic_id и article_id. Как я могу поместить поля для тех других атрибутов компоновщика в "новую тему" форма, таким образом, они не выходят ноль?
Разгадали ответ. Уловка заключалась в следующем:
@topic.linkers.build.build_article
Создает компоновщики, а затем строит статью для каждого компоновщика. Итак, в моделях:
topic.rb требует accept_nested_attributes_for: linkers
linker.rb требует accept_nested_attributes_for: article
Затем в форме:
<%= form_for(@topic) do |topic_form| %>
...fields...
<%= topic_form.fields_for :linkers do |linker_form| %>
...linker fields...
<%= linker_form.fields_for :article do |article_form| %>
...article fields...