Ruby on Rails Tutorial - Ошибка маршрутизации в / сессиях - PullRequest
1 голос
/ 28 февраля 2012

Я занимаюсь обучением Майкла Хартла по Ruby on Rails и получаю ошибку маршрутизации при попытке перейти к localhost: 3000 / сессий

Ошибка маршрутизации

Нет совпадений маршрутов "/ сессий"

Из этого урока у меня сложилось впечатление, что рельсы выведут маршрут к "сессиям", и мне не нужно будет добавлять маршрут спецификации к rout.rb.

Если я запускаю рейк-маршруты, я получаю следующее

      users GET    /users(.:format)          {:action=>"index", :controller=>"users"}
            POST   /users(.:format)          {:action=>"create", :controller=>"users"} 
   new_user GET    /users/new(.:format)      {:action=>"new", :controller=>"users"}
  edit_user GET    /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
       user GET    /users/:id(.:format)      {:action=>"show", :controller=>"users"}
            PUT    /users/:id(.:format)      {:action=>"update", :controller=>"users"}
            DELETE /users/:id(.:format)      {:action=>"destroy", :controller=>"users"}
   sessions POST   /sessions(.:format)       {:action=>"create", :controller=>"sessions"}
new_session GET    /sessions/new(.:format)   {:action=>"new", :controller=>"sessions"}
    session DELETE /sessions/:id(.:format)   {:action=>"destroy", :controller=>"sessions"}
   root        /(.:format)               {:controller=>"pages", :action=>"home"}
 signup        /signup(.:format)         {:controller=>"users", :action=>"new"}
 signin        /signin(.:format)         {:controller=>"sessions", :action=>"new"}
signout        /signout(.:format)        {:controller=>"sessions", :action=>"destroy"}
  about        /about(.:format)          {:controller=>"pages", :action=>"about"}
contact        /contact(.:format)        {:controller=>"pages", :action=>"contact"}
   help        /help(.:format)           {:controller=>"pages", :action=>"help"}

Мой route.rb содержит

SampleApp::Application.routes.draw do

  resources :users
  resources :sessions, :only => [:new, :create, :destroy]

  root              :to => 'pages#home'

  match '/signup',  :to => 'users#new'
  match '/signin',  :to => 'sessions#new'
  match '/signout', :to => 'sessions#destroy'

  match '/about',   :to => 'pages#about'
  match '/contact', :to => 'pages#contact'
  match '/help',    :to => 'pages#help'

Я могу заставить его работать, если добавлю следующую строку в rout.rb, но я не думаю, что мне нужно делать это явно

  match '/sessions',:to => 'sessions#create'

Я что-то упускаю или что-то неправильно понимаю?
Я использую Rails 3.0.11 и Ruby 1.9.2p290

1 Ответ

4 голосов
/ 28 февраля 2012

В рельсах запрос GET глагола к /sessions маршрутизирует к действию index.

Вам нужно либо перейти к /sessions/new, либо добавить дополнительное совпадение, как вы сделали в последней части вашего вопроса.

Это маршруты по умолчанию для resource: http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...