2011-01-22 2 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 (Bad Request), а не ошибку 404 (Файл не найден).

Смежные вопросы