2017-08-25 101 views
1

我有一個factor控制器,其採用因子值對於兩種不同類型的因素滑軌檢查是否在控制器

  1. 主要因素
  2. 次要因素

存在PARAMS和我將它們作爲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 

但在上面的每當我嘗試通過一個secondary_factor我得到以下錯誤:

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' 

所以對我來說似乎這個錯誤就要到了,因爲我沒有任何值,在這種情況下primary_factor_params,這就是方式,它拋出,因爲第一次的錯誤如果條件。

我已經試過:

primary_factor_params.exists? 
primary_factor_params.has_key?(:primary_factors) 
.... 

但他們都拋出了同樣的錯誤,因爲primary_factor_params不存在。有沒有一種方法來測試這個沒有丟失的參數錯誤?

回答

3

問題是此行params.require(:primary)說,參數是必需的,因此試圖做這樣params.require(:primary).exists?不會幫助你,如果你沒有一個:primary PARAM,因爲在所有的require已經失敗。

你需要檢查它的存在params本身。例如params.has_key?(:primary)

對您的使用案例有依賴性,您也可以直接在params上使用params.permit(:primary)。有關如何使用ActionController::Parametersparams的類)的詳細信息,請參閱API文檔。

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

+0

是的,這非常有意義,我削除的事實,我需要測試'params'因爲'primary_factor_params'不會在這種情況下,存在於所有 – anonn023432