【问题标题】:Strong parameter: issue with array on "permit" method强参数:“允许”方法上的数组问题
【发布时间】:2014-08-04 17:08:59
【问题描述】:

问题

/app/controllers/users_controller.rb:29: 语法错误,意外的 ',',期待 => 名称,角色:[],(这里的东西)

场景

users_controller.rb:

params.require(:user).permit(:name, roles: [])

诊断

  • 当我访问任何与users_controller.rb 相关的页面时,就会出现问题;
  • 如果我使用:roles => []而不是roles: [],错误是一样的;
  • 如果我将 roles: [] 更改为 :roles,一切都会好起来的。

环境

我在 CentOS 6.5 和 Rails 4 上运行。

【问题讨论】:

标签: ruby-on-rails-4


【解决方案1】:

逗号是意外的,因为它将:name 解释为哈希键。这是因为 Rails 看到了哈希 roles: []。明确标记为这样

params.require(:user).permit(:name, {roles: []})

【讨论】:

  • 如我所说,我使用的是 Rails 4...this 问题错了吗?
  • Ruby 有两种有效的方法来解释您传递给permit 的参数,作为散列或作为包含散列的数组。似乎出于某种原因选择了前者。我承认自己很惊讶,但请查看 this answer 以深入了解 Ruby 如何解释参数列表。
  • 在链接的答案中,解析器正确理解参数是一个数组,后跟一个哈希。我怀疑您需要深入研究 strong_params gem 的源代码才能更清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多