Mam kontroler z wieloma działaniami, które przyjmują: rok i: miesiąc jako atrybutów z adresu URL. Zrobiłem prywatną metodę check_date na sprawdź, czy data jest poprawna i sprawdź, czy data nie jest w przyszłości.Jak zatrzymać wykonywanie kontrolera po użyciu polecenia redirect_to? (Korzystanie z szyn)
def check_date(year, month)
if month < 1 || month > 12 || year < 2000
flash[:notice] = I18n.t 'archive.invalid_date'
redirect_to :action => 'index'
elsif year > Date.today.year || (year == Date.today.year && month > Date.today.month)
flash[:notice] = I18n.t 'archive.no_future'
redirect_to :action => 'month_index',
:year => Date.today.year,
:month => Date.today.month,
:type => params[:type]
end
end
Czy istnieje sposób szyn kończąc wykonanie kontrolera po redirect_to?
Sposoby mogę myśleć są albo rzucić wyjątek po redirect_to lub zwrócić wartość z check_date i sprawdzić w każdej akcji, która nazywa go - coś jak
def month_index
year = params[:year].to_i
month = params[:month].to_i
if !check_date(year, month)
return
...
end
Ale zastanawiam się, czy istnieje jakiś fajny sposób na zrobienie tego. Byłem w połowie mając nadzieję, że po wywołaniu przekierowania na szyny rozpoznałem, że chcę zatrzymać się na , ale to się nie wydaje.
Może to rozwiązać problem pytającego, ale przyjechałem tutaj, spodziewając się rozwiązania takiego jak vrish88. – iphone007