我记得曾经看到能够在控制器顶部定义一个动作需要工作的参数。对于我的生活,我似乎无法再找到任何这种能力,它将对以下内容有用:
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]所以如果一些聪明的人决定在不给我params的情况下访问该动作,那么它就会失败并使用nil.each_with_index。
如果缺少参数,那么优雅地给出404或其他东西是很好的,而不必将其编码到这种类型的每个方法中。
这是否存在? :)
答案 0 :(得分:3)
实际上,偶然发现了这篇文章:http://rails.nuvvo.com/lesson/6376-action-controller-verification
该方法称为验证,您可以指定期望的参数之类的内容。 :)
答案 1 :(得分:0)
试试这段代码:
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(找不到文件)。
答案 2 :(得分:-1)
我不记得现有的功能允许你这样做。你可以在行动的顶部使用它:
params[:links] ||= []