在我的Rails应用中,退出链接无法正常工作,我不确定我能做些什么来解决它。在我的Heroku日志中,当我尝试从我的用户帐户注销时,出现以下错误:
ActionController :: RoutingError(没有路由匹配[GET]" / signout"):
我的config / routes.rb文件中有以下路由:
match '/signout', to: 'sessions#destroy', via: :delete
在我的会话控制器中,我有以下方法:
def destroy
sign_out
redirect_to root_path
end
然后在我的session_shelper.rb文件中,我有以下sign_out方法:
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
从我的角度来看,一切似乎都是正确的,所以我不确定导致错误的原因或我如何解决它。我的应用程序托管在Heroku上,以防有用。非常感谢!
sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to info_path
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
sign_out
redirect_to root_path
end
end
<nav>
<ul class="nav pull-right">
<% if signed_in? %>
<li><%= link_to "Settings", edit_user_path(current_user) %></li>
<li class="divider"></li>
<li><%= link_to "Sign out", signout_path, method: "delete" %></li>
</ul>
<% else %>
<li><%= link_to "Sign in", signin_path %>
<% end %>
</ul>
</nav>
答案 0 :(得分:1)
更改
match '/signout', to: 'sessions#destroy', via: :delete
到
match '/signout' => 'sessions#destroy', :via => :delete
更改
method: "delete"
至:method => :delete