为什么我得到没有路线匹配[GET]" / session"虽然它在路线文件中使用DELETE?

时间:2014-01-04 18:58:48

标签: ruby-on-rails ruby authentication ruby-on-rails-4 osx-mavericks

我正在使用Rails4应用程序,并使用Monban进行身份验证。 当我运行rails g monban:scaffold时,它会创建几个文件,例如:

的routes.rb

resource :session, only: [:new, :create, :destroy]
resources :users, only: [:new, :create]

sessions_controller.rb

class SessionsController < ApplicationController
  respond_to :html

  def new
  end

  def create
    user = authenticate_session(session_params)
    sign_in(user) or set_flash_message
    respond_with user, location: root_path
  end

  def destroy
    sign_out
    redirect_to root_path
  end

  private

  def session_params
    params.require(:session).permit(:email, :password)
  end
end

当我运行rake routes时,我得到:

     Prefix Verb   URI Pattern            Controller#Action
       root GET    /                      homes#show
    session POST   /session(.:format)     sessions#create
new_session GET    /session/new(.:format) sessions#new
            DELETE /session(.:format)     sessions#destroy
      users POST   /users(.:format)       users#create
   new_user GET    /users/new(.:format)   users#new

views/layouts/application.html.erb内部我添加了:

<% if signed_in? %>
    <%= current_user.username %>
    <%= link_to 'Sign out', session_path, method: :delete %>
<% else %>
    <%= link_to 'Sign in', new_session_path %>
    <%= link_to 'Sign up', new_user_path %>
<% end %>

当我运行应用程序时,我可以登录但是当我“退出”时出现错误:     No route matches [GET] "/session"

从我在这里看到的“据我所知”,destroy正在寻找GET,而它正在使用DELETE,因为它在上面喊叫,对吧?

我在这里错过了什么或出了什么问题? 感谢

== UPDTAE ==

看起来,它与JavaScript错误有关,因为我从application.js禁用了jQuery。原因是,我在创建应用程序后第一次运行应用程序时遇到错误Circular dependency detected while autoloading constant HomesController。以下是我更改的内容,添加了“Monban”gem,将root to: 'homes#show', via: :get添加到路由并使用show方法创建了HomesController。

当我在线搜索时,我发现其他人通过禁用来自application.js的jQuery修复了类似问题“如果不相同”。

当我这样做时,该应用程序工作正常,但后来我遇到了上述问题。

现在要解决这两个问题,我摆脱了'Turbolinks'的宝石,它与应用程序之间的关联。

搜索有关Circular dependency detected while autoloading constant HomesController问题的更多信息时,我发现Circular dependency detected while autoloading constant这是一个有趣的知道“如果这是真的”Maverics可能是原因。上周我将我的OSX从Mountain Lion更新为Maverics,之前我从未遇到任何类似的问题。

我不知道造成这些问题的原因是什么,知道吗?我希望不是Maverics。

2 个答案:

答案 0 :(得分:1)

就像说egyamado:你需要在你的布局中加入jquery_ujs。

答案 1 :(得分:1)

好像我面临的问题与Rails新版本4.0.1和4.0.2有关。显然“不确定”Rails新版本对Turbolinks和/或jquery有问题。可能这是一个错误。

当我将Rails版本从4.0.2降级为4.0.0时,一切都恢复正常。