我已经安装了宁静的身份验证和一切似乎是工作的罚款。我可以注册和登录。只有这样我可以注销,是通过输入URL http://localhost:3000/logout

我怎么添加一个注销的按钮上的一页?我想添加一个成员。页面

<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>

其中引用的session_controller.rb 但我得到一个错误的"不行动的答复显示。行动:创建、销毁和新的"

任何想法?感谢名单

有帮助吗?

解决方案

你有什么在你的路由文件?

尝试把

map.log_out 'logout', :controller => 'sessions', :action => 'destroy'

在您的路由。

然后只是有

<%= link_to "Sign out", log_out_url %>

有关的退出链接。

修改

所有的到你是如何指定路由。

由于你必须在路由的map.log_out,则URL HTTP://本地主机:3000 /注销 URL由该拾取并路由到正确的行动。

如果您有:

<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>

这只会为你生成 HTTP的链接://本地主机:3000 /会话。但是,这无助于路由。您还需要指定正确的路线。

请注意,Rails不追加破坏行动的URL。 (它不会产生 HTTP://本地主机:3000 /会话/破坏它假定,如果你有一个行动摧毁,你将有一个DELETE HTTP动词来发送。出于某种原因,它不是很完善,它实际上也犯规默认发送DELETE动词。

您可以迫使它这样做:

<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>

这仍然不会,除非你的工作也正确地路由它。如果你把下面进入路线:

map.resource :session

然后轨将产生所有动词的路由并为它们指定默认的操作,包括删除操作。更多信息可以在这里找到: Rails的路由从外面

这是整页是值得一读一遍又一遍,直到你真正了解它。路由的关键是理解的Rails!

有关一个简单的控制器等会话,这是更容易只是指定log_out路线,然后链接到log_out_url ..

(希望是有道理的,睡眠剥夺在爬行!)

其他提示

如果您使用 制定 和你的关注的模型 用户, 优雅的方式是在这里:

<%= link_to 'logout', destroy_user_session_path, method: :delete %>

它的工作,因为:

  • 由于HTTP方法GET,POST,放、修补和删除,因此使用 method: :delete (不 method: :destroy)
  • 我们使用 destroy_user_session_path制定用户 模特像往常一样,如果定义的其他型号名称(如 经理 你只是改变注销路径 destroy_manager_session_path
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top