1

我正在开发一个简单的 Rails 3.2 应用程序。我一直在关注Ruby on Rails 教程来管理用户和会话(cookie)。当我尝试退出时发生路由错误。它在我的台式机上没有任何错误,但是当我尝试我的 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