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 に答える