【问题标题】:Cannot permit parameters?不能允许参数?
【发布时间】:2013-03-13 02:48:22
【问题描述】:

这对我来说很奇怪,所以我只是好奇是否有其他人遇到过这种情况:

我有以下内容:

def credential_params
  params.required(:credential).permit(:name,:agent_ids)
end

在我的控制器中创建和更新操作,我正在使用带有上述参数调用的批量分配...

@credential.update_attributes(credential_params)

但我仍然收到Unpermitted parameters: agent_ids

如果我将其更改为params.required(:credential).permit!(即全部允许),它当然可以工作。

我觉得我必须在这里忽略一些明显的问题......有人知道它可能是什么吗?

【问题讨论】:

  • 不应该是require吗?
  • @jvnill - 查看文档后,应该是,但你知道吗?它也按“要求”工作。我想知道这是一个错误还是一个功能......
  • @jvnill:这是一个特性,requiredrequire 的别名,查看附近的来源:github.com/rails/strong_parameters/blob/master/lib/…

标签: ruby-on-rails ruby-on-rails-4 strong-parameters


【解决方案1】:

试试

params.require(:credential).permit(:name, { :agent_ids => [] })

【讨论】:

  • 我想我们发布的时间差不多,但我会给你答案,因为这对我来说不值得任何分数 :) 谢谢你看!
【解决方案2】:

知道了。

数组不是supported types 之一:

允许的标量类型有 String、Symbol、NilClass、Numeric、TrueClass、FalseClass、Date、Time、DateTime、StringIO、IO、ActionDispatch::Http::UploadedFile 和 Rack::Test::UploadedFile。

因此解决方案是指定一个数组,如下所示:

params.require(:credential).permit(:name, :agent_ids => [])

希望其他人觉得这很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多