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,您可以指定预期的参数等内容。:)