Rails4 强参数抛出 NoMethodError

Rails4 Strong params throws NoMethodError

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

当像这样调用强参数时(取自 SessionController 的示例,但它在任何使用强参数的地方都会失败)

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版本,更新了所有相关工具。

感谢您的帮助。

在 4.x 之前的 Rails 中,控制器的参数对象是具有无差异访问的散列,而在 Rails 4+ 中是一个 ActionController::Parameters 实例。因此,我怀疑该项目在该机器中使用的 Rails 版本早于 4.x。

如果 rails --version 输出一些意外的东西,请尝试重新安装由 Gemfile.lock 定义的所有 gem by 运行:

bundle exec gem pristine --all

在项目的根文件夹中。