0

在我的 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 上,以防万一。非常感谢!

session_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>
4

1 回答 1

1

改变

match '/signout', to: 'sessions#destroy', via: :delete 

match '/signout' => 'sessions#destroy', :via => :delete 

改变

method: "delete":method => :delete

于 2012-08-17T16:53:06.667 回答