[英]Rails Error - undefined local variable or method `signout_path'
错误来自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>
好的,这里已经很晚了,我不等待您输出rake route或routes.rb文件。 如我的评论中所述,进入您的shell,进入您的应用程序目录并运行
rake routes
这将显示所有可能的路线。 很有可能已经存在退出过程的途径。
如果没有,则必须在/config/routes.rb中创建路由并将其定向到正确的控制器。 例如
delete '/logout', to: 'sessions#destroy', as: 'signout'
其中“ delete”是请求,“ / logout”是我的示例网址,“ sessions”是控制器,“ destroy”是操作,并且“注销”您的方法名称(如您在代码中所希望的)。 你可以写
delete '/logout', to: 'sessions#destroy'
在这种情况下,您必须使用url替换例如方法名称signout_path
。
最后提示:注销也可以使用GET而不是DELETE完成。 也许您仅使用GET方法创建了一条路线? 在rake routes
的输出中也应该很明显。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.