ano*_*432 1 ruby ruby-on-rails strong-parameters ruby-on-rails-4
我有一个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
Run Code Online (Sandbox Code Playgroud)
但是在上面我试图传递一个时,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'
Run Code Online (Sandbox Code Playgroud)
所以对我来说似乎这个错误正在出现,因为我primary_factor_params
在这种情况下没有任何值,并且由于第一个if条件,它会抛出错误.
我试过了:
primary_factor_params.exists?
primary_factor_params.has_key?(:primary_factors)
....
Run Code Online (Sandbox Code Playgroud)
但是由于primary_factor_params
不存在,所有这些都会抛出相同的错误.有没有办法测试这个而不会丢失错误的参数错误?
问题是这条线params.require(:primary)
说该参数是必需的,所以params.require(:primary).exists?
如果你根本没有参数那么试图做就不会帮助你:primary
,因为require
已经失败了.
你需要检查它params
本身的存在.例如params.has_key?(:primary)
.
根据您的使用情况,您也可以params.permit(:primary)
直接使用params
.有关如何ActionController::Parameters
(params
可用于类)的详细信息,请参阅API文档.
http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit
归档时间: |
|
查看次数: |
5158 次 |
最近记录: |