【发布时间】:2017-08-25 14:01:05
【问题描述】:
我有一个 factor 控制器,它为两种不同类型的因子获取因子值
- 主要因素
- 次要因素
我将它们作为参数传递如下:
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 的值,这就是由于第一个 if 条件而引发错误的方式。
我试过了:
primary_factor_params.exists?
primary_factor_params.has_key?(:primary_factors)
....
但由于primary_factor_params 不存在,它们都会抛出相同的错误。有没有办法在不因缺少参数而引发错误的情况下进行测试?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters