ruby-on-rails – 如何针对未经许可的参数提出错误,但允许特定的参数?

ruby-on-rails – 如何针对未经许可的参数提出错误,但允许特定的参数?,第1张

概述我已将以下内容添加到我的application.rb中,因为我想控制所有发送的参数: config.action_controller.action_on_unpermitted_parameters = :raise 这种方式,如果我忘记允许参数或类似的东西,我会在开发过程中看到相当快. 但是 – 现在我尝试通过表单更新用户时出现以下错误: found unpermitted parameter 我已将以下内容添加到我的application.rb中,因为我想控制所有发送的参数:

config.action_controller.action_on_unpermitted_parameters = :raise

这种方式,如果我忘记允许参数或类似的东西,我会在开发过程中看到相当快.

但是 – 现在我尝试通过表单更新用户时出现以下错误:

found unpermitted parameters: utf8,_method,authenticity_token,commit,locale,ID

我有点不确定如何继续:事实上这些是我以前不关心的参数,并且它们是由Rails的form_for自动发送的,据我所见.

我只想关心我资源的参数,例如用户[名称],用户[电子邮件]等

有没有办法一般允许上面那些不允许的参数?或者我是否错过了一个重点?

更新

由于问题似乎不可重现,这里是具有特定提交的存储库:

https://github.com/jmuheim/base/commit/dbb62dd68a8a243d056457c9093a6cd8ea3e3836

只需启动服务器,加载页面,以用户身份注册(或使用种子中的pw joshjosh使用josh),然后转到用户>列出用户,并编辑您的用户.然后你会得到错误.

您也可以执行$rake并查看失败的规范.

有趣的是注册时不会引发错误,所以我猜它与UsersController有关.也许是inherited resources的问题?

解决方法 我刚刚使用了您的应用程序,并设法重现您的问题.如果我理解你的问题,这就是我想说的:

>注册由Devise :: RegistrationsController #creu处理.这就是它没有失败的原因.

>在仪表板中单击用户 – >时也会失败创建用户.来自日志:

Processing by UsersController#new as HTML...[1] base(#<UsersController>) »  params=> {  "controller" => "users","action" => "new","locale" => "en"}

虽然它只是一个#new动作所以没有必要检查允许的参数.
我认为您应该在继承的资源文档中对此进行调查.

>以下是rails docs的编辑问题解决方案:

params.require(:user).permit(                 :name,:email,:avatar,:avatar_cache,:remove_avatar,:about,:password,:password_confirmation,:lock_version               )

3.1但是

正如我发现的那样,这与上面的inherIEd_resources不兼容.尝试在文档page上搜索“如果你需要params.require”.他们的一个建议是:

def permitted_params  {    user: params.require(:user).permit(      :name,:lock_version    )  }end

问候

总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何针对未经许可的参数提出错误,但允许特定的参数?全部内容,希望文章能够帮你解决ruby-on-rails – 如何针对未经许可的参数提出错误,但允许特定的参数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1270565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存