重命名模型后,为什么我的创建和更新功能会失败?

After renaming a model, why do my create and update functions fail?

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

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

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

Parameters:

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

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

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

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,但我不确定它为什么会这样做。

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

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