【发布时间】:2014-07-28 20:34:36
【问题描述】:
所以,当我在导航栏的下拉菜单上单击“退出”时出现以下错误:
No route matches [GET] "/user/sign_out"
但是,这仅在使用下拉导航(移动设备的汉堡菜单)上的退出时发生,而不是在常规导航上单击退出时发生。
请看下面的代码:
<div class="container demo-5">
<div class="main clearfix">
<div class="column">
<div id="dl-menu" class="dl-menuwrapper">
<button class="dl-trigger">Open Menu</button>
<ul class="dl-menu dl-menu-toggle">
<div id="closebtn" onclick="closebtn()"></div>
<% if user_signed_in? %>
<li><%= link_to 'FAQ', faq_path %></li>
<li><a href="#">Contact Us</a></li>
<li><%= link_to 'My Account', account_path %></li>
<li><%= link_to 'Sign Out', destroy_user_session_path, method: 'delete' %></li> <--- this is the line
<% else %>
<li><%= link_to 'FAQ', faq_path %></li>
<li><a href="#">Contact Us</a></li>
<li><%= link_to 'Sign In', new_user_session_path %></li>
<li><%= link_to 'Free Trial', plans_path %></li>
<% end %>
</ul>
</div><!-- /dl-menuwrapper -->
</div>
</div>
</div><!-- /container -->
</div>
这是有效的非下拉代码:
<div class="signincontainer pull-right">
<div class="navbar-form navbar-right">
<% if user_signed_in? %>
<%= link_to 'Sign out', destroy_user_session_path, class: 'btn signin-button', method: :delete %>
<div class="btn signin-button usernamefont"><%= link_to current_user.full_name, account_path %></div>
<% else %>
....rest of code here
更新错误:
ActionController::RoutingError (No route matches [GET] "/user/sign_out"):
actionpack (4.0.4) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (4.0.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.4) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.4) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.0.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.0.4) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.0.4) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.0.4) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
actionpack (4.0.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/ru
【问题讨论】:
-
匹配
DELETE /user/sign_out -
干杯!那么我该如何解决这个问题?我有方法:'删除',谢谢!
-
嘿,模型用户是由脚手架生成器创建的?如果不是,您将需要在 config/routes.rb 中提供路由(顺便说一句,这有点奇怪,因为您的 url 包含用户而不是用户。)
-
它包含用户而不是用户,因为我有以下内容:devise_for :users, :path => "user"。请帮我完成这个工作!谢谢!
标签: ruby-on-rails ruby-on-rails-4 devise