2012-06-05 2 views
2

Я получаю следующее сообщение об ошибке при попытке получить доступ к «Вход» маршрут (GET/пользователей/sign_in) ...Rails 3.1 + Придумайте: Маршруты по умолчанию для Завещания не работают

No route matches {:action=>"home", :controller=>"devise/pages"} 

Вот полная ошибка из журнала сервера ...

Started GET "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2012-06-05 00:51:54 -0700 
    Processing by Devise::SessionsController#new as HTML 
Rendered devise/shared/_links.erb (2.9ms) 
Rendered devise/sessions/new.html.erb within layouts/application (33.5ms) 
Rendered pages/_header.html.erb (75.9ms) 
Completed 500 Internal Server Error in 349ms 

ActionView::Template::Error (No route matches {:action=>"home", :controller=>"devise/pages"}): 

Вот тело моего приложения/макета ...

<!-- BEGIN body --> 
<body class="top"> 

    <!-- BEGIN .container --> 
    <div class="container"> 

     <%= render 'pages/header' %> 
     <%= render 'pages/menu' %> 

     <p class="notice"><%= notice %></p> 
     <p class="alert"><%= alert %></p> 

     <%= yield %> 

    <!-- END .container --> 
    </div> 

    <%= render 'pages/footer' %> 

</body> 

единственный контроллер I ч ave - это контроллер «страниц». Кроме того, вот мой route.rb файл ...

MyApp::Application.routes.draw do 

    devise_for :users 

    match '/contact', :to => 'pages#contact' 
    match '/news', :to => 'pages#news' 
    match '/home', :to => 'pages#home' 
    match '/features', :to => 'pages#features' 

    root :to => 'pages#home' 

end 

Я не знаю, если он не имеет ничего общего с ним, но я также сгенерировал представление с помощью команды rails generate devise:views.

Почему он пытается получить доступ к несуществующему контроллеру «разработка/страницы» и «домашнему» действию, когда я делаю GET/users/sign_in? Это не то, что мои маршруты показать, когда я rake routes ...

new_user_session GET /users/sign_in(.:format)  {:action=>"new", :controller=>"devise/sessions"} 
      user_session POST /users/sign_in(.:format)  {:action=>"create", :controller=>"devise/sessions"} 
    destroy_user_session DELETE /users/sign_out(.:format)  {:action=>"destroy", :controller=>"devise/sessions"} 
      user_password POST /users/password(.:format)  {:action=>"create", :controller=>"devise/passwords"} 
     new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"} 
     edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"} 
         PUT /users/password(.:format)  {:action=>"update", :controller=>"devise/passwords"} 
cancel_user_registration GET /users/cancel(.:format)  {:action=>"cancel", :controller=>"devise/registrations"} 
     user_registration POST /users(.:format)    {:action=>"create", :controller=>"devise/registrations"} 
    new_user_registration GET /users/sign_up(.:format)  {:action=>"new", :controller=>"devise/registrations"} 
    edit_user_registration GET /users/edit(.:format)   {:action=>"edit", :controller=>"devise/registrations"} 
         PUT /users(.:format)    {:action=>"update", :controller=>"devise/registrations"} 
         DELETE /users(.:format)    {:action=>"destroy", :controller=>"devise/registrations"} 
        root  /       {:controller=>"pages", :action=>"home"} 
       contact  /contact(.:format)    {:controller=>"pages", :action=>"contact"} 
        news  /news(.:format)    {:controller=>"pages", :action=>"news"} 
        home  /home(.:format)    {:controller=>"pages", :action=>"home"} 
       features  /features(.:format)   {:controller=>"pages", :action=>"features"} 

спасибо заранее за вашу мудрость!

EDIT Добавление "/ меню страницы" парциальное по запросу ...

<!-- BEGIN .menu-primary --> 
    <div class="menu-primary"> 
     <table> 
      <tr> 
       <td class="menu"> 
        <ul> 
         <li> 
          <a href="/news">News</a> 
         </li> 
         <li> 
          <a href="/features"><span>Shop Products</span></a> 
          <ul> 
           <li><a href="/features">Features</a></li> 
          </ul> 
         </li> 
         <li><a href="#"><span>Shop Parts</span></a><ul><li><a href="#">Controls (Coming Soon)</a></li><li><a href="#">Monitors (Coming Soon)</a></li><li><a href="#">Artwork (Coming Soon)</a></li><li><a href="#">Accessories (Coming Soon)</a></li></ul></li> 
         <li><a href="/contact">Contact Us</a></li> 
        </ul> 
       </td> 
      </tr> 
     </table> 
    <!-- END .menu-primary --> 
    </div> 

UPDATE В моем шаблоне заголовка, я имел ...

<%= link_to image_tag("mylogo.png", :alt=>"", :width=>"300", :height=>"100"), {:action => 'home', :controller => 'pages'} %> 

и удаление этого позволяет моей странице sign_in загружаться успешно. Зачем?!

+0

Корневой путь обычно должен находиться в нижней части ваших маршрутов – daniel

+0

спасибо за отзыв! это ничего не изменило. – BeachRunnerFred

+1

Вы перезапустили свой сервер? Можете ли вы дать мне полное сообщение об ошибке? – Sebastien

ответ

4

При построении URL-адреса для {:action => 'home', :controller => 'pages'} Rails использует пути относительно контроллера, отображающего текущий вид. Для страницы входа в систему это будет «разработка/сеансы», поэтому он ищет элемент управления Pages в пространстве имен devise.

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

Заменить:

{:action => 'home', :controller => 'pages'} 

с этим:

{:action => 'home', :controller => '/pages'} 
1
"",: ширина => "300",: высота => "100"), root_path%>

Я считаю, что link_to URL, который был передан в область видимости изобрести. Вы должны указать имя пути, которое было создано из маршрутов рейка.

-1

я нашел место, где добавить обратную косую черту «/» в начале контроллера относительного файла, в котором будет показана ошибка в относительном файле (см ошибка при разработке.журнал) В моем случае:

= link_to "About", :controller => "/pages", :action => "about" 

или

= link_to "Home", :controller => "/pages", :action => "home" 
0

У меня была такая же проблема с установкой Завещания и после этого ничего не мог бежать. Но в моем случае я пытался решить, используя маршруты, Рельсы, указывающие на странице маршрутов:

<%= link_to 'Home', {:controller => 'frontpages', :action => 'services'}, class: 'footer-nav-link' %> 
 
    
 
To: 
 
    
 
<%= link_to 'Services', frontpages_services_path, class: 'footer-nav-link' %>

И все бегут за.