【问题标题】:After renaming a model, why do my create and update functions fail?重命名模型后,为什么我的创建和更新功能失败?
【发布时间】:2016-11-21 23:31:49
【问题描述】:

我重命名了我的一个模型及其关联的表名、控制器、视图文件夹以及应用程序中所有文件中旧名称的引用。该应用程序运行良好,但由于与参数相关的错误,我现在无法创建或更新操作(新名称)。这是创建新操作时收到的错误:

undefined method `permit' for "create":String Did you mean? print

以下是显示此错误的参数:

Parameters:

{"utf8"=>"✓", "authenticity_token"=>"[removed]", "commit"=>"Create This Campaign"}

我在这里用 [removed] 手动替换了令牌。

我在尝试更新操作时收到同样的错误:

undefined method `permit' for "update":String Did you mean? print

以下是显示此更新错误的参数:

Parameters:

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"[removed]", "commit"=>"Submit", "id"=>"50"}

在我重命名所有内容之前,这些错误并未出现。知道为什么会这样吗?看起来我的应用正在将字符串(而不是哈希)传递给 params.require(:action).permit,但我不确定它为什么会这样做。

【问题讨论】:

    标签: ruby-on-rails activerecord rails-activerecord ruby-on-rails-5 rails-models


    【解决方案1】:

    您不应该在 Rails 中使用 action 作为资源名称。 params 中的 action 参数始终设置为被调用的操作名称,这意味着您不能使用 params[:action] 将数据发送回您的服务器。

    在控制器的 update 操作中,params[:action] 将始终是字符串 "update",因此您得到的关于 permit 的错误未在字符串 "update" 上定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2015-11-14
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多