繁体   English   中英

Rails错误-未定义的局部变量或方法`signout_path'

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM