【问题标题】:Rails routes error. No route matches [POST] "/sessions/new"Rails 路线错误。没有路线匹配 [POST] "/sessions/new"
【发布时间】:2012-08-28 09:35:21
【问题描述】:

你好,我在做 Rails Book 的教程,遇到了一些麻烦。

当我尝试使用我的用户名和密码登录时,我收到以下错误:

路由错误

没有路由匹配 [POST] "/sessions/new" 尝试运行 rake 路由以获取有关可用路由的更多信息。

这是我的路由文件配置。

ZomfgShop::Application.routes.draw do
  get "admin/index"
  get "sessions/new"
  get "sessions/create"
  get "sessions/destroy"

  resources :users
  resources :orders
  resources :line_items
  resources :carts

  get "store/index"

  resources :products do
    get :who_bought, on: :member
  end

  resources :products

  root to: 'store#index', as: 'store'

  resources :line_items do
    #member do
    # post 'decrement'
    #end
    post 'decrement', on: :member
  end

  get 'admin' => 'admin#index'

  controller :sessions do
    get 'login' => :new
    post 'login' => :create
    delete 'logout' => :destroy
  end

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    你有控制器而不是 :sessions 路由的资源。

      resources :sessions do
        get 'login' => :new
        post 'login' => :create
        delete 'logout' => :destroy
      end
    

    【讨论】:

      【解决方案2】:

      尝试替换

      get "sessions/new"
      
      get "sessions/create"
      
      get "sessions/destroy"
      

      resources :sessions
      

      确保您有一个 views/sessions/new.html.erb 文件(如果使用 devise,则在 views/devise/ 下)

      如果你不使用 Devise,请确保你在 sessions_controller.rb 中有这个

      def new
      end
      def create
      end
      def destroy
      end
      

      【讨论】:

        【解决方案3】:

        谢谢你们,将我的 routes.rb 文件更改为这个,我的路由再次正常工作!

        ZomfgShop::Application.routes.draw do
          get 'admin' => 'admin#index'
        
          controller :sessions do
            get 'login' => :new
            post 'login' => :create
            delete 'logout' => :destroy
          end
          scope '(:locale)' do
            resources :users
            resources :orders
            resources :line_items
            resources :carts
            get "store/index"
            resources :products do
              get :who_bought, on: :member
            end
          root to: 'store#index', as: 'store'
        end
        
        resources :line_items do
          #member do
          # post 'decrement'
          #end
          post 'decrement', on: :member
        end
        

        【讨论】:

        • 如果在每行代码之间放置 4 个空格,它将很好地格式化和可读。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多