2011-01-22 57 views
0

我記得曾經看到能夠在控制器頂部定義動作需要工作的參數。對於我的生活,我似乎無法找到這種能力的任何提及了,它將以下是有用的:在Rails中爲控制器動作定義預期參數

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 [:鏈接]因此,如果一些智者決定訪問該行動沒有給我params然後它失敗nil.each_with_index。

如果缺少參數而不必將此代碼編碼到此類型的每種方法中,那麼可以優雅地給出404或其他東西。

這是存在嗎? :)

回答

-1

我不記得功能存在,允許你這樣做。你可以在你的,而不是行動的頂部使用:

params[:links] ||= [] 
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(文件未找到)。

相關問題