【问题标题】:Rails Permitting ParametersRails 允许参数
【发布时间】:2013-09-14 15:18:39
【问题描述】:

在 Rails 4 中,通常我只会在通过使用以下代码声明私有函数来提交表单时允许某些参数:

params.require(:object).permit(:name, :email, :phone)

但是,我使用的是 form_tag 而不是 form_for,因此每个字段都在 params 哈希中提交。由于我不是 ruby​​/rails 专家,以有效方式允许这些参数的最佳方法是什么?

这样对吗?

params.require(:params).permit(:name, :email, :phone)

【问题讨论】:

  • 我想你可以在这里回答你自己的问题。当您尝试使用它时它是否有效?如果是这样,那就对了! :)
  • 您可以安全地删除require(:params)
  • 如果对您有帮助,请回答正确。谢谢 :)

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


【解决方案1】:

我认为这是正确的解决方案:

params.permit(:name, :email, :phone)

【讨论】:

    【解决方案2】:

    您可以像 Lichtamberg 建议的那样更改 params.permit 行,但是根据您的实现,您可能会破坏其他路由(尤其是 RESTful 路由)。如果这是唯一一个这样的页面(使用form_tag),您可以做的一件事是通过传入变量的名称来更改表单输入以匹配常规form_for 表单的结构,就像这样:

    <%= label_tag :object, :name %>
    <%= text_field_tag :object, :name %>
    

    这会产生一个看起来像这样的参数映射:

    {
        :object => {
            :name => "tommyd456",
            :email => "bla@bla.com"
            ...etc ...etc
    

    这对于原始的params.require(:object) 行完全有效。

    查看this link from the Rails documentation 了解更多信息。

    【讨论】:

    • @tommyd456 没问题。如果有人充分回答了您的问题,请不要忘记接受答案。
    • 是的,delba 回答了我的问题,但它位于 cmets 部分,因此我无法将其标记为已回答 - 但我确实将其标记为有用。如果他把他的回答作为答案,我也会“勾选”它。这就是为什么我没有勾选你的回复,即使它非常有用。
    • @tommyd456 够公平的。如果您愿意,您也可以随时发布自己的答案并接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2023-03-23
    • 2019-09-17
    • 2017-02-01
    相关资源
    最近更新 更多