ruby-on-rails - 没有路由匹配 [POST] "/sessions/user"

标签 ruby-on-rails devise ruby-on-rails-4

我刚刚在我的应用程序上安装了 Devise,我以前像 Michael Hartl 教程一样从头开始。

目前我可以注册和注销。但是当我登录时,它给出了一个错误:
No route matches [POST] "/sessions/user"
当我使用或不使用(正确)密码单击登录/登录按钮时,就会发生这种情况。

我的路由文件是:

SampleApp::Application.routes.draw do
devise_for :users, path_names: { sign_in: "login", sign_out: "logout"}

resources :users do
  resources :bookings, only: [:show]
  end
resources :bookings
resources :sessions

# match '/signup',  to: 'devise/registrations#new', via: :get
# match '/signin',  to: 'devise/sessions#new', via: [:post, :get]
# match '/signout', to: 'devise/sessions#destroy', via: :delete
match '/admin',   to: 'admin#new', via:  :get
match "bookings/new", to: 'bookings#new', via: [:post, :get]

devise_scope :user do 
  root to: 'static_pages#home'
end

[编辑]

我的表单是设计的默认值:
<h2>Sign in</h2>

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>
  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>
  <% if devise_mapping.rememberable? -%>
    <div><%= f.check_box :remember_me %>
    <%= f.label :remember_me %></div>
  <% end -%>
  <div><%= f.submit "Sign in" %></div>
<% end %>

目前我在 Session Controller 或 Helper 上没有任何代码,就像 Michael Hartl 教程中那样

我关于 Sessions 的佣金路线如下:
            sessions GET      /sessions(.:format)                    sessions#index
                     POST     /sessions(.:format)                    sessions#create
         new_session GET      /sessions/new(.:format)                sessions#new
        edit_session GET      /sessions/:id/edit(.:format)           sessions#edit
             session GET      /sessions/:id(.:format)                sessions#show
                     PATCH    /sessions/:id(.:format)                sessions#update
                     PUT      /sessions/:id(.:format)                sessions#update
                     DELETE   /sessions/:id(.:format)                sessions#destroy

[解决了]

我更新了路由文件
  devise_scope :user do 
    root to: 'static_pages#home'
    match '/sessions/user', to: 'devise/sessions#create', via: :post
  end

最佳答案

在路由文件中添加以下几行

post ':controller(/:action(/:id(.:format)))'
get ':controller(/:action(/:id(.:format)))'

也删除match ':controller(/:action(/:id(.:format)))' ->在以后的版本中引起冲突

关于ruby-on-rails - 没有路由匹配 [POST] "/sessions/user",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392033/

相关文章:

ruby-on-rails - 由于重定向,设计 JSON API 返回 200 而不是 401

ruby-on-rails - Rails + Capybara + poltergeist ArgumentError : rack-test requires a rack application,,但是没有给出

javascript - 未捕获类型错误 : undefined is not a function gauge. js

ruby-on-rails - 目录 : how to catch any route that didn't match route config and redirect to homepage

ruby-on-rails - (Ruby,Rails) CRUD 嵌套模型在单个页面上深度超过 4 层...?

javascript - 当我将 jQuery 选择打印到控制台时,为什么会得到 [object, Object]?

ruby-on-rails - Rails 中未定义的方法 `devise_for'

ruby-on-rails - 无方法错误 : undefined method `current_sign_in_at' for #User:0x000055ce01dcf0a8 by using Devise_token_auth rails gem is not working

ruby-on-rails - 将 devise_token_auth 与表单例份验证一起使用

ruby-on-rails - Ruby on Rails 全局 ActiveRecord::枚举