2013-03-11 2 views
2

Мы используем следующий кетчуп все маршрут routes.rb для 404-х:Как отобразить одну и ту же страницу 404 для всех неизвестных запросов, включая изображения, в Rails 3.2 без указания каждого формата файла отдельно?

# Catches all 404 errors and redirects 
match '*url' => 'default#error_404' 

Но это порождает ошибку 500 внутреннего сервера ниже, потому что мы специально не поймать форматы PNG в error_404.

Started GET "/images/doesnotexistyo.png" for 71.198.44.101 at 2013-03-08 07:59:24 +0300 
Processing by DefaultController#error_404 as PNG 
    Parameters: {"url"=>"images/doesnotexistyo"} 
Completed 500 Internal Server Error in 1ms 

ActionView::MissingTemplate (Missing template default/error_404, application/error_404 with {:locale=>[:en], :formats=>[:png], :handlers=>[:erb, :builder]}. Searched in: 
    * "/home/prod/Prod/app/views" 

В идеале, все неизвестные запросы будут оказывать по умолчанию # error_404 HTML действия. Мы не можем понять, как получить format.any для визуализации действия 404 HTML. Как все неизвестные запросы могут быть обработаны с ответом на ошибку 404 HTML?

ответ

2

в контроллере Применение:Use rescue_from

rescue_from "ActionController::UnknownAction", :with => :render_404 
rescue_from "ActionController::RoutingError", :with => :render_404 

def render_404 
    respond_to do |format| 
    format.html { render :template => "<PATH_OF_404_ERROR_TEMPLATE>", :status => 404 }  
    format.xml { head 404 } 
    format.js { head 404 } 
    format.json { head 404 } 
    end 
    return false 
end 
+0

, что делает возвращение ложным делать? – Crashalot

+0

Я тоже не вижу причин для возврата false. – ben

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

  • Нет связанных вопросов^_^