2011-10-06 1 views
4

У меня есть корень маршрутПочему мой маршрут рельсов немного ушел?

root :to => 'home#index' 

, которая для моего домашнего контроллера, и если я посетить http://localhost:3000/ все прекрасно работает я ударил правильный дом контроллер и индексное действие. Затем я установил этот камень rails_admin Но когда я посещаю http://localhost:3000/admin я ударил метод в моем контроллере приложения

rescue_from CanCan::AccessDenied do |exception| 
    redirect_to root_path, :alert => exception.message 
end 

и получить эту ошибку, как это возможно, что теперь у меня есть ошибки маршрутизации ... любая идея

Routing Error 

No route matches {:controller=>"home"} 

ответ

3

Я думаю, что проблема заключается в том, что в движке rails_admin нет главного контроллера, у которого есть собственная маршрутизация, и почему-то он останавливается там (потому что в этом контроллере нет такого контроллера). Я бы попробовать использовать:

redirect_to root_url 

или даже этот

redirect_to '/' 

Этот последний способ означает, что рельсы не должны пытаться выяснить путь, вызвав URL для, и может быть безопаснее при работе с двигателями.

+1

это сделал трюк redirect_to '/' ... thanks alot – Trace

-1

Похоже, что у вас нет вашего Домашнего Контролера.

Попробуйте добавить это выше вашего определения «корень»:

resources :home, :only => :index 

Я также предлагаю чтение official Routes guide на сайте Rails.

+0

я добавил в верхней части корня, но я получил ActionController :: RoutingError (нет маршрута матчей { : controller => "home"}): app/controllers/application_controller.rb: 5: in 'block in ' – Trace

+0

вот мои ресурсы route.rb: home,: only =>: index root : to => 'home # index' – Trace

+0

Сделайте «рейк-маршруты» в папке вашего приложения, соответствует ли маршрут root_path вашему домашнему индексу? –

4

Если вы ссылаетесь маршруты своего приложения внутри вашего двигателя или config/initializers/rails_admin.rb, вы должны префикс с main_app.

redirect_to main_app.root_path, :alert => exception.message