首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有路由匹配[GET]“/user/ route”

没有路由匹配[GET]“/user/ route”
EN

Stack Overflow用户
提问于 2014-06-07 19:54:14
回答 3查看 1.1K关注 0票数 1

因此,当单击导航上的下拉菜单上的“注销”时,我会得到以下错误:

代码语言:javascript
复制
No route matches [GET] "/user/sign_out"

然而,只有在使用下拉式导航(移动设备的汉堡包菜单)上的标志时,才会发生这种情况,而不是在常规导航上单击标志时才会发生。

见下面的代码:

代码语言:javascript
复制
  <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>

这就是工作的非下拉代码:

代码语言:javascript
复制
  <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

更新错误:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2014-06-08 00:27:08

method指定做一个符号

在不工作的代码中,它当前是一个字符串:

代码语言:javascript
复制
link_to 'Sign Out', destroy_user_session_path, method: 'delete' 

在正在工作的代码中,它被正确地指定为符号:

代码语言:javascript
复制
link_to 'Sign out', destroy_user_session_path, method: :delete
票数 2
EN

Stack Overflow用户

发布于 2014-06-08 09:48:39

@colinm的回答是正确的;但让我解释一下为什么:

--

HTTP动词

安装时设置一系列RESTful路由。在它生成的路由中,有destroy_user_session_path,它使用delete HTTP谓词:

代码语言:javascript
复制
 destroy_user_session DELETE /users/sign_out   {controller:"devise/sessions", action:"destroy"}

这意味着只有当您在您的delete方法中使用link_to方法时,此路由才可用,如下所示:

代码语言:javascript
复制
<%= link_to "Log Out", destroy_user_session_path, method: :delete %>

默认为GET HTTP动词,这意味着如果您没有在代码中显式定义method: :delete,Rails将不会为路由查找正确的verb

票数 1
EN

Stack Overflow用户

发布于 2014-06-07 20:11:45

让我们尝试一下;移除

代码语言:javascript
复制
devise_for :users, :path => 'user'

加上这个;

代码语言:javascript
复制
devise_for :users, :path => 'user' do
  get '/user/sign_out' => 'devise/sessions#destroy' 
end

更多;这里

最后的建议

我发现它可以将请求转换为删除;

所以

代码语言:javascript
复制
use devise_for :users, :path => 'user' in your config/routes

确保在application.html.erb中加载了javascript

代码语言:javascript
复制
<%= javascript_include_tag "application" %>

其次,确保jqueryjquery-ujs gem和类似的内容一起添加;

代码语言:javascript
复制
//= require jquery
    //= require jquery_ujs
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24101033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档