错误来自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>
答案 0 :(得分:0)
好的,这里已经很晚了,我不会等你的rake route或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'
在这种情况下,您必须使用url替换方法名signout_path
。
最后一个提示:使用GET而不是DELETE也可以完成注销。也许你创建了一个只有GET方法的路线?在rake routes
的输出中也应该是显而易见的。