设计签名链接问题(Rails4)

Ste*_*nou 1 ruby-on-rails devise ruby-on-rails-4

我的导轨版本:

rails -v
Rails 4.0.2
Run Code Online (Sandbox Code Playgroud)

我使用Devise作为用户模型.

注销链接是:

  <%= link_to 'Sign out', destroy_user_session_path, method: :delete %>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时出现此错误:

AbstractController::ActionNotFound at /users/sign_out
The action 'show' could not be found for UsersController
Run Code Online (Sandbox Code Playgroud)

通过执行rake路由,我得到了这个:

destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
Run Code Online (Sandbox Code Playgroud)

登录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'
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它会搜索show动作.只是为了它的乐趣,我在用户控制器和节目视图中创建了show动作.它的作用是重定向到show动作.不知道为什么.

如果您需要任何其他信息,请告诉我.有什么线索有什么不对?

小智 7

如果您正在为用户使用设计模型,并且您正在使用用户资源,那么请确保在/config/routes.rb中的"resources:users"之前提到"devise_for:users"