如何修复此错误?我想要干掉我的控制器,并且在每种方法中我对params []执行完整性检查,确保所有参数都存在。
问题在于lambda的回归。正如定义
def validate_input(parameters)
return proc {
if parameters.find_index { |i| i.nil? }
error_message = {'Error' => 'Please fix some params'}.to_json
render :json => error_message and return
end
}
end
然后,在我的控制器操作中,我做了:
def action
...
validate_input([my_sane_id, my_other_param]).call
...
end
并得到错误:意外返回。
答案 0 :(得分:2)
def validate_input(*parameters)
if parameters.any?(&:nil?)
render :json => { :error => 'Please fix some params' }
false
else
true
end
end
def action
...
return unless validate_input(my_sane_id, my_other_param)
...
end
您可以使用splat运算符(“*”)将未知数量的参数导入数组
您可以使用(“任何?”)方法而不是索引(位置)
如果你只对数组中的每个项目进行函数调用,你可以使用symbol to proc(“&:”)
如果渲染json
最好使用符号作为哈希键(“:error”)
你返回true / false表示一切正常,如果错误,只需从行动中返回