1

私は単純なRails 3.2アプリに取り組んでいます。ユーザーとセッション(Cookie)を管理するために、Ruby on Railsチュートリアルに従っています。サインアウトしようとすると、ルーティング エラーが発生します。私のデスクトップ マシンではエラーなく動作しますが、iOS デバイス (Heroku から) で試してみると、ルーティング エラーが発生します。

Heroku でサインアウトをクリックすると、次のエラーが表示されます。

The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved 

With the url: .../sessions#

#URLのどこから来たのかわかりません。

iOS シミュレーターを使用するか、デバイスを IP アドレスに接続して、ローカル マシンで試してみると、次のエラーが表示されます。

Started DELETE "/sessions" for 127.0.0.1 at 2012-04-23 18:10:41 +0200

ActionController::RoutingError (No route matches [DELETE] "/sessions"):

With the url: .../sessions#

#繰り返しますが、URLの がどこから来たのかわかりません。

私のルートは次のようになります。

resources :sessions, only: [:new, :create, :destroy]

match '/signup',  to: 'users#new'
match '/signin',  to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete

私の SessionsController は次のようになります。

def new
end

def create
  user = User.find_by_email(params[:email])
  if user && user.authenticate(params[:password])
    sign_in user
    redirect_to root_path
  else 
    render 'new'
  end
end

def destroy 
  sign_out
  redirect_to root_path
end

SessionsHelper にあるサインアウト メソッドは次のようになります。

def sign_out
  current_user = nil
  cookies.delete(:remember_token)
end

サインアウト リンクは次のようになります。

<%= link_to "Sign out", signout_path, method: "delete", "data-icon" => "arrow-r", "data-iconpos" => "right",  "data-theme" => "b", :class => "ui-btn-right", "data-ajax" => "false" %>

モバイル バージョンのスタイリングには jQuery mobile を使用します。

私が間違っていること、またはエラーの原因を知っている人はいますか?

完了するために、rake routes を実行すると、次の結果が得られます。

root        /                         pages#home
[...]  
sessions POST   /sessions(.:format)       sessions#create
new_session GET    /sessions/new(.:format)   sessions#new
session DELETE /sessions/:id(.:format)   sessions#destroy
[...]

ありがとう!

4

0 に答える 0