重命名模型后,为什么我的创建和更新功能会失败?
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"
.
我重命名了我的一个模型及其关联的 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"
.