4

私はすべての動画と記事を試しましたが、コレクション_選択値をfields_forにする解決策がstrong_paramsのホワイトリストに表示されません。私はこれを理解しようと数日間過ごした(そして多くの人に尋ねた)。もし誰かが私が非常に感謝しているのを助けるために時間をとることができたら!Rails 5:fields_forでstrong_paramsからcollection_select値を渡すにはどうすればいいですか?

ListとTopicの間に多対多の関連があり、List_Topicが結合モデルとして機能しています。 form_forを使用して、Listのインスタンス(@list)のフォームを作成し、次にfields_for:list_topicsを作成しました。 forのフィールド内で、私はTopic.allによって作成されるcollection_selectを作成しました。私は私のリストコントローラで

<br> 
<%= form_for(@list) do |f| %> 
    <%= f.label :subject %> 
    <%= f.text_field :subject %> 
<br> 
<br> 

<%= f.fields_for :list_topics do |ff| %> 
    <%= ff.label "Choose a Topic:" %><br> 
    <%= ff.label :content %> 
    <%= ff.text_field :content %> 
    <%= ff.collection_select(:id, @all_topics, :id, :name, {}, {multiple: true}) %> 
<% end %> 

<%= f.submit %> 
<% end %> 

:strong_paramsは@listのホワイトリストに登録されていますが、

list_topics_attributes"=>{"0"=>{"content"=>"Hey", "id"=>["", "2"]}}} 

class ListsController < ApplicationController 

    def new 
    @list = List.new 
    @all_topics = Topic.all 
    @list.list_topics.build 
    end 

    def create 
    @list = List.new(list_params) 
    end 

private 

    def list_params 
    params.require(:list).permit(:subject, :list_topics_attributes => [:topic, :content, :topic_ids, :id, :ids]) 
    end 

end 

fields_forのフォームからのparamsは、次のように渡されfields_for through:list_topics_attributes内の:content paramsを認識するために作成したcustom_attributeライターを取得することができました。私は、リストされているstrong_paramsのidパラメータをホワイトリストに登録できませんでした。私が何を試しても、私が従う記事やビデオに関係なく、collection_selectを通過しました。彼らは単に表示されません。

私もここにgit repoを持っています。フォームがリストの下にある/新しい

https://github.com/jwolfe890/Top5/blob/master/app/views/lists/new.html.erb

は、任意の洞察力のために途方もありがとうございます!

答えて

3

誰かがここにいただけですが、彼のコメントは削除されたように見えます。 idフィールドlist_topics_attributesハッシュに渡される必要があり、THAT:

params.require(:list).permit(:subject, :list_topics_attributes => [ :content, id: []]) 

基本的にIDがlist_topics_attributes内の配列であるため、ハッシュ、:idフィールドも必要と彼のソリューションが働いていたので、私はちょうど彼に感謝したいです配列が割り当てられます。

ありがとうございました!

関連する問題