2017-01-26 38 views
4

我試過每個視頻和文章,仍然無法找到解決方案,將strong_params中的fields_for collection_select值列入白名單。我花了好幾天的時間來解決這個問題(並問了很多人)。如果任何人都可以花時間幫助,我會非常感激!Rails 5:如何通過fields_for中的strong_params傳遞collection_select值?

我有List和Topic之間的多對多關聯,List_Topic充當連接模型。使用form_for,我爲List創建了一個實例(@list),然後創建了一個fields_for:list_topics。在字段中,我創建了一個由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 %> 

在我的名單控制器我有:

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作爲傳遞:

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

雖然strong_params被列入白名單的@list,我能夠得到我所做的custom_attribute編寫器來識別:fields_for through:list_topics_attributes中的content params,我還沒有能夠將strong_params中的:id參數列入白名單,這些參數是無論我嘗試什麼或者我關注的文章/視頻,都通過collection_select傳入。他們根本沒有出現。

我也有這裏的git回購。形式是在列出/新

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

感謝您對極大任何見解!

回答

3

有人就在這裏,但他的評論看起來像被刪除了。我只是想感謝他,因爲他的解決方案工作:

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

本質,因爲ID在list_topics_attributes內的數組散列:ID字段在list_topics_attributes哈希值傳遞和:id字段也需要有一個數組分配給它。

謝謝!

相關問題