なぜなぜ... ...?Rails5、ネストされた形式の許容されないパラメータ、既存のオブジェクトの関連付け中
3つのモデル(FirstModel、SecondModel、JoinedModel)、JoinedModelはJoinedModel介して、他の互いに他の2 has_many
の両方に属します。 JoinedModel accepts_nested_attributes_for
first_modelとsecond_model。
また、first_model_id
とsecond_model_id
の存在を確認します。
入社モデル強いのparams:
private
def joined_params
params.require(:joined_model).permit(:first_model_id, :second_model_id,
:first_models_attributes => [:id, :name],
:second_models_attributes => [:id, :full_name])
end
JoinedModelの_form:私はこのフォームを送信すると
は、私が手
<%= form_for(joined_model) do |f| %>
<%= f.fields_for :second_models do |ff| %>
<%= ff.select(SecondModel.all.map {|c| [ c.full_name, c.id ] }, { include_blank: true }) -%>
(およびFirstModelに同じf.fields_for
)
Unperm
パラメータ::ittedのparams first_models、
、クエリをsecond_models { "UTF8" => "✓"、 "authenticity_token" => "GVW/OrOXJruAK0ZD + uoajJ4N + dZvpmZF8Ay0TOKF9HPO19d4tRBoWz0C4VoaOABYat8KzrryL8lp5ax + Y9ZJRg == ";" joined_models "=> {" first_models "=> {" first_model_id "=>" 1 "}、 " second_models "=> {" second_model_id "=>" 1 "}}、" commit "=>"作成結合した モデル "}
私は、フォームがハッシュを送信しようとする理由は、どのようになど知らない - "second_models"=>{"second_model_id"=>"1"}
それだけ"second_model_id"=>"1"
ようなことになって、私のフォームは、単純なf.number_field :first_model_id
代わりのselect
を使用している場合、それは次のように行います...
あなたはあなたの答えに答えを加え、それを受け入れるべきです。奇妙な気分だが、絶対に受け入れられる(そして奨励される)!また、より明瞭なタイトルについて考えることもできます。この問題が発生したときに、他の人がこの解決法を見つけるのを助けることができますか? – coreyward
はい、良いアイデア、私はそれを投稿します。タイトルについて、私はそのようにもっとよく考えました - 多くの関連キーワード(他の人は思うことはできません:)))) –
あなたのタイトルは、簡潔で関連性の高い質問または問題文でなければなりません。検索はキーワードの読み込みがなくてもうまく機能します。 ;) – coreyward