Ruby on rails 需要帮助解决未定义的方法'permit';对于#<;ActiveSupport::HashWithInferenceAccess:0x007fbf17e00b40>;

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

我正在开发一款使用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_sanitizer.for(:accept_invitation) << [:name, :site_id]
end
…这给了我一个错误

undefined method permit for # <ActiveSupport::HashWithIndifferentAccess:0x007fbf17e00b40>

有人能帮我把这个弄好吗?谢谢

许可证
方法在Desive中很明显是可用的,正如他们的文档中所描述的,但是它显然有问题,因为您的代码肯定不起作用,就像我的代码一样

您还可以看到为什么非块在这里引发错误:哪个调用这个

解决此问题的最佳方法是只使用gem
strong\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