【问题标题】:Ruby on Rails Tutorial - Routing error on '/sessions'Ruby on Rails 教程 - '/sessions' 上的路由错误
【发布时间】:2012-03-17 23:29:28
【问题描述】:

我正在做 Michael Hartls Ruby on Rails 教程,当我尝试浏览到 localhost:3000/sessions 时遇到路由错误

路由错误

没有路由匹配“/sessions”

从教程中,我的印象是 rails 会推断到“会话”的路由,我不需要向 routes.rb 添加规范路由。

如果我运行 rake 路线,我会得到以下结果

      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"}

我的 routes.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'

如果我将以下行添加到 routes.rb,我可以让它工作,但我认为我不需要明确地这样做

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

我是否遗漏了什么或误解了什么?
我正在运行 Rails 3.0.11 和 Ruby 1.9.2p290

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    在 Rails 中,GET/sessions 的动词请求路由到 index 操作。

    您需要浏览到/sessions/new,或者像您在问题的最后部分中所做的那样添加额外的匹配项。

    这些是resource 的默认路由:http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多