Ruby on rails 需要帮助解决未定义的方法'permit';对于#<;ActiveSupport::HashWithInferenceAccess:0x007fbf17e00b40>;
我正在开发一款使用Desive 3.2的应用程序。在保存Ruby on rails 需要帮助解决未定义的方法'permit';对于#<;ActiveSupport::HashWithInferenceAccess:0x007fbf17e00b40>;,ruby-on-rails,devise,devise-invitable,Ruby On Rails,Devise,Devise Invitable,我正在开发一款使用Desive 3.2的应用程序。在保存成员时,我试图获得一些额外的参数。根据文件,我应该能够做到这一点 在我的应用程序_controller.rb中,我有这个(Rails 3.2.22.5) 然后我正在尝试文档中提到的两个版本 def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) << [:name, :site_id] devise_parameter_san
成员时,我试图获得一些额外的参数。根据文件,我应该能够做到这一点
在我的应用程序_controller.rb中,我有这个(Rails 3.2.22.5)
然后我正在尝试文档中提到的两个版本
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << [:name, :site_id]
devise_parameter_sanitizer.for(:accept_invitation) << [:name, :site_id]
end
…这给了我一个错误
undefined method permit for # <ActiveSupport::HashWithIndifferentAccess:0x007fbf17e00b40>
有人能帮我把这个弄好吗?谢谢 许可证
方法在Desive中很明显是可用的,正如他们的文档中所描述的,但是它显然有问题,因为您的代码肯定不起作用,就像我的代码一样
您还可以看到为什么非块在这里引发错误:哪个调用这个
解决此问题的最佳方法是只使用gemstrong\u参数
,它是ActiveSupport::HashWithIndifferentAccess`的子类,请参见:
因此,只需将其添加到您的GEM文件并捆绑安装即可:
gem 'strong_parameters'
bundle install
undefined method permit for # <ActiveSupport::HashWithIndifferentAccess:0x007fbf17e00b40>
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"d9pudkerHaJoP7H7N1vYzWs/SSX1WtRO+8lRD313xP0=", "member"=>{"invitation_token"=>"WLh98kdrFAnyVb879EDS", "name"=>"NAMEHERE", "password"=>"XXXXXXX", "password_confirmation"=>"XXXXXXX", "site_id"=>"XXXXXXXXXXXXX"}, "commit"=>"Set my password", "action"=>"update", "controller"=>"devise/invitations"}
gem 'strong_parameters'
bundle install