Почему мой рельсовый маршрут немного не в порядке? - PullRequest
4 голосов
/ 06 октября 2011

У меня есть корневой маршрут

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 ]

4 голосов
/ 19 января 2012

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

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

3 голосов
/ 06 октября 2011

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

redirect_to root_url

или даже этот

redirect_to '/'

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

0 голосов
/ 06 октября 2011

Похоже, у вас не определен домашний контроллер.

Попробуйте добавить это выше определения "root":

resources :home, :only => :index

Я бы также предложил прочитать Официальный путеводитель на сайте Rails.

...