设计退出链接问题(Rails 4)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计退出链接问题(Rails 4)相关的知识,希望对你有一定的参考价值。
我的导轨版本:
rails -v
Rails 4.0.2
我使用Devise作为用户模型。
注销链接是:
<%= link_to 'Sign out', destroy_user_session_path, method: :delete %>
当我点击链接时出现此错误:
AbstractController::ActionNotFound at /users/sign_out
The action 'show' could not be found for UsersController
通过执行rake路由,我得到了这个:
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
登录development.log
Started GET "/users/sign_out" for 127.0.0.1 at 2013-12-28 20:45:06 +0000
AbstractController::ActionNotFound - The action 'show' could not be found for UsersController:
actionpack (4.0.2) lib/abstract_controller/base.rb:131:in `process'
actionpack (4.0.2) lib/abstract_controller/rendering.rb:44:in `process'
actionpack (4.0.2) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.0.2) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.0.2) lib/action_controller/metal.rb:231:in `block in action'
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in `call'
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:in `call'
我不明白为什么它会搜索show动作。只是为了它的乐趣,我在用户控制器和节目视图中创建了show动作。它的作用是重定向到show动作。不知道为什么。
如果您需要任何其他信息,请告诉我。有什么线索有什么不对?
答案
如果您正在为用户使用设计模型,并且您正在使用用户资源,那么请确保在/config/routes.rb中的“resources:users”之前提到“devise_for:users”
另一答案
我通过像这样创建devise_scope来修复它:
devise_scope :user do
get '/users/sign_out' => 'devise/sessions#destroy'
end
感谢@David的帮助。
另一答案
你说你在users_controller中创建了一个show
动作。您是否已将其设置为执行以下操作:
def show
@user = current_user
end
注意:您注销的网址变得类似/ users / sign_out,因为您已声明用户是资源。 Rails路由所有资源丰富的路由/ user /:id以显示用户控制器的操作。
以上是关于设计退出链接问题(Rails 4)的主要内容,如果未能解决你的问题,请参考以下文章
打开链接时阻止 Rails 应用程序在 iOS Safari 上退出全屏
以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?