Rails4强参数抛出NoMethodError

时间:2016-01-05 13:38:48

标签: ruby-on-rails ruby strong-parameters

我只在一台计算机上遇到了一个奇怪的行为。

当像这样调用强params时(例如从SessionController获取,但在使用强params的地方失败)

params.require(:session).permit(:email, :password, :remember)

我收到以下错误:

NoMethodError
private method `require' called for<ActiveSupport::HashWithIndifferentAccess:0x000001103230c8>

代码在任何其他计算机(开发人员和生产系统)上都可以正常工作,之前也可以使用这个代码。我使用的是Mac OS(10.9),Ruby(2.2.0),Rails(4.2.x)。我使用rbenv作为ruby版本管理器。

本地安装必须存在问题。问题发生后,我重新安装了rails,尝试了另一个ruby版本,更新了所有相关工具。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在4.x之前的Rails中,控制器的params对象是一个具有无差别访问权限的哈希,而在Rails 4+中是一个ActionController :: Parameters实例。因此,我怀疑该项目在该机器中使用的Rails版本是在4.x之前。

如果rails --version输出意外的内容,请尝试运行以下命令重新安装Gemfile.lock定义的所有gem:

bundle exec gem pristine --all

在项目的根文件夹中。