ошибка настройки ошибки 404 rails 3.1 с гемом hight_voltage - PullRequest
1 голос
/ 27 ноября 2011

Привет, ребята, я удаляю / страницу из гема high_voltage с этим ответом.

Удалить страницу / высокого напряжения для статических направляющих

У меня в маршрутах для high_voltage это:

match '/:id' => 'high_voltage/pages#show', :as => :static, :via => :get

Для страницы обслуживания 404 в рельсах 3.1 я следую этому исправлению http://techoctave.com/c7/posts/36-rails-3-0-rescue-from-routing-error-solution с errors_controller.rb со следующим кодом:

def routing
  render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
 end

Затем я добавляю к rout.rb следующий код для страницы обслуживания 404 в рельсах

match '*a', :to => 'errors#routing'

Проблема в том, что если я вставлю в браузер www.mydomain.com / sdfs не работает системная ошибка 404 и отобразится Нет такой страницы: sdfs

но тем не менее, если я поставлю www.mydomain.com/a_controller/action/sdfs да, исправно работает исправление для ошибки 404 страницы.

Я думаю, что проблема в моих маршрутах. Rb

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Спасибо, kevinthopson, за мой, это не работает нормально: (.

У меня есть в rout.rb :

match '/:id' => 'pages#show', :as => :static, :via => :get

Я добавил это в pages_controller.rb

class PagesController < HighVoltage::PagesController
  rescue_from ActionView::MissingTemplate do |exception|
    render_not_found
  end
end

Я добавил этот код в aplication_controller.rb:

def render_not_found
   render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
  end

Работает нормально, если поставить сейчас:

localhost: 3000 / dfadsfadsf

Проблема теперь в том, что если вы, например, указали эти маршруты в панели навигации:

localhost: 3000 / users_or_static_page / asdfadfadfa

Не работает для меня: (.

0 голосов
/ 13 декабря 2011

Я решил эту проблему, расширив HighVoltage :: PagesController и изменив перехват ошибок:

class PagesController < HighVoltage::PagesController
  rescue_from ActionView::MissingTemplate do |exception|
    render_not_found
  end
end

В моем случае моя функция 404 находится в контроллере приложения, так что ее можно легко вызвать излюбое место.Если вы сделаете то же самое изменение, вам также потребуется обновить маршрут:

match '/:id' => 'pages#show', :as => :static, :via => :get
...