gpt4 book ai didi

ruby-on-rails - 为什么我不能在参数中做每一个?

转载 作者:行者123 更新时间:2023-12-01 12:23:38 27 4
gpt4 key购买 nike

我有这个输入

<input type="hidden" name="languages[0][name]" value="xx">
<input type="hidden" name="languages[0][level]" value="yy">

0 是一个随着此输入使用 javascript 动态生成而改变的值。

在我的 Controller 中,我想访问这个参数,并执行每个参数,如下所示:

params[:languages].each do |lang|
@job_offer.job_offer_languages.create name: lang[:name], level: lang[:level]
end
end

params[:languages] 是:

{"0"=><ActionController::Parameters {"name"=>"Inglés", "level"=>"Bás̄ico"} permitted: false>} permitted: false>

所以我希望每个人都给我一个包含名称和级别的哈希值,

但是在每个 lang 中,键 "0" 是一个字符串,而不是参数。

我试过 fetch 和 permit,得到了相同的结果。

我让它工作的唯一方法是将其添加为每个中的第一行,但我不明白为什么我必须这样做。

 ...each do |lang|
lang = params[:languages].fetch(lang)

最佳答案

因为您的 params[:language] 是一个散列 each 迭代其条目并传递 keyvalue block 的每个条目。因此,要以您希望的方式访问 lang,您需要执行以下操作:

params[:languages].each do |index, lang|
@job_offer.job_offer_languages.create name: lang[:name], level: lang[:level]
end
end

或使用 ActiveSupport 接收要迭代的 lang 值列表:

 params[:languages].values.each do |lang|
@job_offer.job_offer_languages.create name: lang[:name], level: lang[:level]
end
end

关于ruby-on-rails - 为什么我不能在参数中做每一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896295/

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