Я использую камень кокона для формы вложенных атрибутов, в данном случае Projectuser
has_many ContractLinks
. Это все работает нормально, когда я добавляю контракт, он отправляет параметры формы как contract_links_attributes
:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "projectuser"=>{"project_id"=>"538", "user_id"=>"56", "contract_links_attributes"=>{"description"=>"test", "contract_link"=>"test"}, "commit"=>"Save"}
Теперь я также хочу иметь Project
has_many ContractLinks
, поэтому я изменил отношение, чтобы оно стало полиморфным. Это все еще прекрасно работает для Projectuser
, но не для Project
. Я повторно использовал ту же самую частичную форму, но вместо того, чтобы отправлять параметры формы как contract_links_attributes
, он отправляет его как contract_links
. Это, конечно, приводит к недопустимой ошибке параметра. Так почему же одна и та же форма частично отправляет разные значения параметров?
Это форма для Project
и Projectuser
:
= f.fields_for(:contract_links) do |contract_link|
= render "contract_link_fields", f: contract_link
А это contract_link_fields
:
%tr.contract
%td= f.date_select :contract_date, include_blank: true, start_year: 10.year.ago.year
%td= f.text_field :description, class: "input-xlarge"
%td= f.text_field :contract_link, class: "input-xlarge"