我正在使用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。
答案 0 :(得分:1)
就像说egyamado:你需要在你的布局中加入jquery_ujs。
答案 1 :(得分:1)
好像我面临的问题与Rails新版本4.0.1和4.0.2有关。显然“不确定”Rails新版本对Turbolinks和/或jquery有问题。可能这是一个错误。
当我将Rails版本从4.0.2
降级为4.0.0
时,一切都恢复正常。