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

标签 ruby-on-rails ruby forms ruby-on-rails-4 collection-select

我已经尝试了所有视频和文章,但仍然找不到将 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/

相关文章:

jquery - 使用 jQuery 对文本输入数组索引重新编号

ruby-on-rails - 根据request.xhr设置布局?

ruby-on-rails - 如何将登录表单放在 Devise 和 Rails 的标题中

ruby-on-rails - Rails + Amazon s3 + jquery 文件上传 : upload progress bar not working?

javascript - 如何保存拖动标记的新定位?

ruby-on-rails - 如何限制 Net::HTTP 请求的大小?

java - 使用 struts 中的 jsp 唯一标识每一行以在表单中使用

ruby-on-rails - 没有参数的 request.fullpath

ruby-on-rails - GPGME Passphrase 提示问题(Ruby)

php 你如何确保 $_POST 数据来自你的表单而不是外部影响?