私は単純な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
[...]
ありがとう!