如何修复此路由错误?

时间:2012-08-17 16:51:26

标签: ruby-on-rails

在我的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>

1 个答案:

答案 0 :(得分:1)

更改

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

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

更改

method: "delete":method => :delete