gpt4 book ai didi

ruby-on-rails - 当我将 "multiple true"添加到 collection_select 时,Rails 4 HABTM 停止工作

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

我在谷歌上搜索并尝试了过去几天我能想到的一切来解决一个相对简单的(我想)has_and_belongs_to_many 关系问题。

我成功地使用 HABTM 关系提交了一个单一的关系值。这是示例代码:

型号:

class Livre < ActiveRecord::Base
has_and_belongs_to_many : auteurs
end

class Auteur < ActiveRecord::Base
has_and_belongs_to_many :livres
end

Controller :

def new
@livre = Livre.new
@auteurs = Auteur.all
end

def create
@livre = Livre.new(livre_params)
if @livre.save
redirect_to [:admin, @livre]
else
render 'new'
end
end

private
def livre_params
params.require(:livre).permit(:name, :auteur_ids)
end

查看:

<% f.label :auteur %><br>
<% f.collection_select(:auteur_ids, @auteurs, :id, :name) %>

发布的参数:

{"utf8"=>"✓",
"authenticity_token"=>"mAXUm7MRDgJgCH00VPb9bpgC+y/iOfxBjXSazcthWYs=",
"livre"=>{"name"=>"sdfsdfd",
"auteur_ids"=>"3"},
"commit"=>"Create Livre"}

但是当我尝试将“multiple true”添加到 View 的 collection_select 助手时,(现在是 multiple)关系不再保存。示例代码:

(模型和 Controller 都不变)

查看:

<% f.label :auteur %><br>
<% f.collection_select(:auteur_ids, @auteurs, :id, :name, {}, {:multiple => true}) %>

发布的参数:

{"utf8"=>"✓",
"authenticity_token"=>"mAXUm7MRDgJgCH00VPb9bpgC+y/iOfxBjXSazcthWYs=",
"livre"=>{"name"=>"sdfsdf",
"auteur_ids"=>["1",
"5",
"3"]},
"commit"=>"Create Livre"}

如您所见,“auteur_ids”的参数现在是一个数组。这是唯一的区别。

我做错了什么?

澄清一下:这两段代码都能够向 livres 数据库表中添加一条新记录,但只有第一段代码能够向 auteurs_livres 数据库表。第二个只是不向 auteurs_livres 中插入任何内容。

(我在 ruby​​ 1.9.3p194 和 rails 4.0.1 上运行)

谢谢!


回答

对于遇到同样问题的好人,这里是答案:

编辑您的 Controller 并将允许的参数从 :auteur_ids 更改为 {:auteur_ids => []}

params.require(:livre).permit(:name, {:auteur_ids => []})

现在可以了:)

最佳答案

对于遇到同样问题的好人,这里是答案:

编辑您的 Controller 并将允许的参数从 :auteur_ids 更改为 {:auteur_ids => []}

params.require(:livre).permit(:name, {:auteur_ids => []})

现在可以了:)

关于ruby-on-rails - 当我将 "multiple true"添加到 collection_select 时,Rails 4 HABTM 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345213/

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