【发布时间】:2011-09-05 03:44:41
【问题描述】:
我一直有条不紊地阅读《Agile Web Development with Rails》一书。到目前为止没有问题,直到我遇到使用会话控制器的注销开发。我只是想让销毁方法在会话控制器中工作。这是我所拥有的:
sessions_controller.rb
def destroy
session[:user_id] = nil
redirect_to store_url, :notice => "Logged out"
end
routes.rb
controller :sessions do
get 'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end
我重置了服务器并且可以使用 localhost:3000/login 登录但是如果我尝试 localhost:3000/logout 我得到以下路由错误:没有路由匹配“/logout”
非常感谢任何帮助,因为我一直在通过网络寻找答案。
【问题讨论】:
-
你能在你的视图中显示注销链接的代码吗?也许它丢失了
:method => :delete? -
奥斯汀是正确的。当您直接在浏览器中输入
/logout时,您正在执行get请求,而delete请求是预期的。如果你想在浏览器地址栏输入/logout退出,你必须把delete改成get。
标签: ruby-on-rails routing