【问题标题】:Rails 5 Permitting controller action changed paramsRails 5 允许控制器操作更改参数
【发布时间】:2017-11-05 05:55:23
【问题描述】:

所以我允许以下参数。

p = params.permit(:a, :b, :c, :lines => [:location_id, :quantity, :product => [:id]])

在我的控制器操作中,我将我允许的数据添加到 lines 参数。

p['lines'] << {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"}

这就是参数更改后的样子。

puts params['lines']
#> [<ActionController::Parameters {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} permitted: false>]

但正如您所见,这是不允许的。我在这里想念什么?我正在使用 Rails 5。

【问题讨论】:

  • 您能否将您的代码按其名称发布 - 逐行发布。因为目前我知道您在调用 permit 后将值添加到哈希中。那是行不通的。此外,为什么你需要在参数中添加一些东西。你想达到什么目标?

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


【解决方案1】:

要获得允许(列入白名单)的参数,您始终必须确保在 params 更改时调用允许的版本,在您的情况下为 p

paramsp 之间的区别在于params.permit(...) 返回一个允许的自身副本并将其分配给p。所以params权限状态保持不变。

尝试使用puts p['lines'] 而不是puts params['lines'],看看是否能得到想要的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2018-09-21
    相关资源
    最近更新 更多