2017-08-25 7 views
1

に存在する場合、私はRailsはparamsは、コントローラ

  1. 要因
  2. 二因子

因子の二つの異なるタイプの係数値をとるfactorコントローラを有しており、私は、それらを通過確認しますparamsは次のようになります:

class FactorController < AdminController 

    def create 
    if primary_factor_params        ## LINE 5 
     do something 
    elsif secondary_factor_params 
     do something else 
    end 
    end 

    def primary_factor_params 
    params.require(:primary).permit(:user_id,   ## LINE 70 
              :primary_factors) 
    end 

    def secondary_factor_params 
    params.require(:secondary).permit(:user_id, 
             :secondary_factors) 
    end 
end 

私がこの状態でprimary_factor_paramsための任意の値を持っていなかったし、それはそれが原因で最初のエラーがスローされます方法ですので、このエラーが来ているようだ、私にとても

ActionController::ParameterMissing (param is missing or the value is empty: primary): 
    app/controllers/factors_controller.rb:70:in `primary_factor_params' app/controllers/api/v1/admin/factors_controller.rb:5:in `create' 

:私は次のエラーを取得するsecondary_factor条件の場合。

私が試してみた:

primary_factor_params.exists? 
primary_factor_params.has_key?(:primary_factors) 
.... 
をしかし primary_factor_paramsが存在しないため、それらのすべてが同じエラーをスローします。不足しているパラメータのエラーを投げずにこれをテストする方法はありますか?

答えて

3

問題はそうrequireがすでに失敗したため、あなたがすべてで:primaryのparamを持っていない場合params.require(:primary).exists?は文句を言わないあなたを助けるように実行しようとすると、パラメータが必要であると言って、この行params.require(:primary)です。

params自体の存在を確認する必要があります。たとえば、params.has_key?(:primary)です。

あなたのユースケースに応じて、params.permit(:primary)paramsに直接使用することもできます。 ActionController::Parameters(クラスはparams)の使用方法の詳細については、APIドキュメントを参照してください。

http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit

+0

'primary_factor_params'がすべてで、この場合には存在しないので、はい、これは完璧な理にかなって、私はparams''にテストする必要があるという事実に消さ – anonn023432

関連する問題