2013-10-07 4 views
0

У меня есть контроллер, как этототдача от действия внутри метода

MyController < ApplicationController 

def my_method 
    validate(params[:name].blank?, "Name can't be blank") 
end 
private 

def validate(condition, msg) 
    if condition 
    flash[:notice] = msg 
    redirect_to :back 
    return 
    end 
end 

Этот код, по понятным причинам, будет иметь «перенаправлять или сделать только один раз» ошибка. Есть ли элегантный способ вернуть действие из этого метода и избежать теста на мои действия?

ответ

1

Вы не можете заставить вызывающему ваш метод, чтобы сделать что-либо, но вы можете сигнализировать к ней, как вы хотите вести себя:

def my_method 
    return unless validate(params[:name].blank?, "Name can't be blank") 
end 

def validate(condition, msg) 
    return true unless condition 

    flash[:notice] = msg 
    redirect_to :back 
    return false 
end 
+0

Моя надежда состоит в том, что я мог бы найти метод 'stop_executing_action' или что-то в пределах рельсов ... Знаете ли вы об этом? – fotanus

+1

Если ваш вызов фильтра возвращает 'false', то выполнение остановится. – tadman

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