10

当包括

gem 'strong_parameters'
gem 'rails-api'

一起在我的身边,Gemfile呼唤params.require

private
  def user_params
    params.require(:user).permit(:first_name, :last_name)
  end

调用失败并出现以下错误require()

TypeError:
   can't convert Symbol into String

回溯显示strong_parameters' ActionController::StrongParameters'require()方法从未被命中。

4

3 回答 3

33

我在这个上花了太长时间,所以我想我会在这里分享,希望能为别人节省一点时间。

上面的错误来自调用时正在执行的require()方法ActiveSupport::Dependencies::Loadable

params.require(:user)...

strong_parameters注入ActionController::StrongParameters这个文件ActionController::Base底部

ActionController::Base.send :include, ActionController::StrongParameters

rails-apigem 需要您的应用程序的扩展ApplicationControllerActionController::API支持ActionController::Base

应用程序控制器对此一无所知,ActionController::StrongParameters因为它们没有扩展ActionController::StrongParameters包含在其中的类。这就是为什么require()方法调用没有调用ActionController::StrongParameters.

讲述就像将以下内容添加ActionController::API到.ActionController::StrongParametersconfig/initializers

ActionController::API.send :include, ActionController::StrongParameters
于 2012-12-06T14:27:43.487 回答
5

这个问题可以通过在 Gemfile 中包含rails_api master git 分支来解决,如下所示:

gem 'rails-api', git: 'https://github.com/rails-api/rails-api.git', branch: 'master'

rails_api gem通过在api.rb中包含以下行来解决此问题

if Rails::VERSION::MAJOR == 4
   include StrongParameters
end
于 2013-07-24T12:15:56.843 回答
1

我有一个拉取请求(当前打开),应该解决这个问题。而不是调用ActionController::API.send,这应该包含在...

ActiveSupport.on_load(:action_controller) do
  include ActionController::StrongParameters
end
于 2013-05-21T21:11:29.517 回答