我試過每個視頻和文章,仍然無法找到解決方案,將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
感謝您對極大任何見解!