gpt4 book ai didi

ruby-on-rails - rails 5 : How to pass collection_select values through strong_params in a fields_for?

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:25 25 4
gpt4 key购买 nike

我已经尝试了所有视频和文章,但仍然找不到将 fields_for collection_select 值加入 strong_params 白名单的解决方案。我花了好几天时间想弄明白(并问了很多人)。如果有人能花时间帮助我,我将不胜感激!

我在 List 和 Topic 之间有一个多对多的关联,List_Topic 充当连接模型。使用 form_for,我为 List 的一个实例(@list)创建了一个表单,然后是一个 fields_for :list_topics。在字段中,我创建了一个 collection_select,它由 Topic.all 填充。

<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 %>

在我的列表 Controller 中我有:

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 表单中的参数传递为:

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

虽然 strong_params 被@list 列入白名单,并且我能够让我制作的 custom_attribute 作者通过 :list_topics_attributes 识别 fields_for 中的 :content 参数,但我无法将 strong_params 中的 :id 参数列入白名单通过 collection_select 传递的,无论我尝试什么或我关注的文章/视频。他们根本就没有出现。

我这里也有 git 仓库。表格在 lists/new 下

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

非常感谢您提供任何见解!

最佳答案

有人刚刚在这里,但他的评论看起来像是被删除了。我只是想感谢他,因为他的解决方案奏效了:

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

本质上,由于 id 在 list_topics_attributes 散列中的一个数组中,因此 :id 字段必须在 list_topics_attributes 散列中传递,并且 :id 字段也需要分配一个数组。

谢谢!

关于ruby-on-rails - rails 5 : How to pass collection_select values through strong_params in a fields_for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41883884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com