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 には、アプリのApplicationController拡張ActionController::APIが必要です。ActionController::Base

ActionController::StrongParametersアプリケーションコントローラーは、含まれていたクラスを拡張していないため、何も知りませんActionController::StrongParametersrequire()これが、メソッド呼び出しが の実装を呼び出していない理由ActionController::StrongParametersです。

ActionController::APIについて伝えるActionController::StrongParametersのは、 のファイルに次を追加するのと同じくらい簡単ですconfig/initializers

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

この問題は、以下のように、Gemfile に rails_api マスター 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 に答える