0

错误来自 app/views/layouts/_header.html.erb。那条线是我的 app/views/layouts/_header.html.erb 的一部分,如下所示:

<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="navbar-inner">
    <div class="container">
      <%= link_to "sample app", root_path, id: "logo" %>
      <nav>
        <ul class="nav pull-right">


       <li><%= link_to "Home", root_path %></li>
          <li><%= link_to "Help", help_path %></li>
          <% if signed_in? %>
            <li><%= link_to "Users", '#' %></li>
            <li id="fat-menu" class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                Account <b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><%= link_to "Profile", current_user %></li>
                <li><%= link_to "Settings", '#' %></li>
                <li class="divider"></li>
                <li>
                  <%= link_to "Sign out", signout_path, method: "delete" %>
                </li>
              </ul>
            </li>
          <% else %>
            <li><%= link_to "Sign in", signin_path %></li> 
         <% end %>        
        </ul>  
      </nav>
    </div>
  </div>
</header>
4

1 回答 1

0

好的,这里已经很晚了,我不等你输出 rake 路由或 routes.rb 文件。正如我的评论中提到的,进入你的 shell,cd 到你的应用程序目录并运行

rake routes

这将显示所有可能的路线。很有可能,已经有退出过程的路线。

如果没有,您必须在 /config/routes.rb 中创建路由并将其定向到正确的控制器。例如

delete '/logout', to: 'sessions#destroy', as: 'signout'

其中'delete'是请求,'/logout'是我的示例url,'sessions'是控制器,'destroy'是动作,'signout'是你的方法名(正如你在代码中所希望的那样)。你可以写

delete '/logout', to: 'sessions#destroy'

在这种情况下,您必须将方法名称替换signout_path为例如 url。

最后一个提示:注销也可以使用 GET 而不是 DELETE。也许您只使用 GET 方法创建了一个路由?在 的输出中也应该很明显rake routes

于 2013-11-14T20:57:02.543 回答