Ruby on rails 定义Rails中控制器操作的预期参数
我记得有一次我看到了在控制器顶部定义动作所需参数的能力。就我的一生而言,我似乎再也找不到任何关于这种能力的提及,这将对以下方面有用:Ruby on rails 定义Rails中控制器操作的预期参数,ruby-on-rails,parameters,Ruby On Rails,Parameters,我记得有一次我看到了在控制器顶部定义动作所需参数的能力。就我的一生而言,我似乎再也找不到任何关于这种能力的提及,这将对以下方面有用: def sort params[:links].each_with_index do |id, index| @link_set.links.in_context(context).update_all(['position=?', index+1], ['id=?', id]) end render :nothing => true e
def sort
params[:links].each_with_index do |id, index|
@link_set.links.in_context(context).update_all(['position=?', index+1], ['id=?', id])
end
render :nothing => true
end
我期待params[:links],所以如果某个smarty决定访问该操作而不给我params,那么它将失败,为nil.each_和_索引
如果缺少参数,最好优雅地给出一个404之类的代码,而不必将其编码到这种类型的每个方法中
这是否存在?:) 我不记得现有的功能允许您这样做。您可以在操作的顶部使用此选项:
params[:links] ||= []
请尝试以下代码:
before_filter :check_params
private
def check_params
needed_params=[:links]
needed_params.each do |x|
render :text=>"Missing param #{x}", :status=>400
return
end
结束
将此代码放在课程的末尾。它适用于每一个动作。此外,您希望返回错误代码400(错误请求),而不是错误404(未找到文件)。实际上,您无意中发现了本文: 该方法称为verify,您可以指定预期的参数等内容。:)