0

问题解决了

klaustopher 他的回答解决了这个问题。


问题是当我的 layouts/application.html.erb 中有 <%= current_user.email %> 或 <%= current_user.username$> 时我无法注销

当我从我的 application.html.erb 中删除这一行时,我可以无错误地注销。我在谷歌上搜索过,但找不到关于这个问题的任何信息。

我的 application.html.erb:

<!DOCTYPE html>
<html id="html">

<head>
<title><%= content_for?(:title) ? yield(:title) : "Contractbeheersysteem" %></title>
    <%= stylesheet_link_tag "application", "simple_form", "gegevens", "drop-down-menu",      "table", :media => "all" %>
    <%= javascript_include_tag "autocomplete-rails.js" %>
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "application" %>
    <%= javascript_include_tag 'jquery.dataTables.min' %>
    <%= csrf_meta_tag %>
    <%= yield(:head) %>
</head>

<body>

<body link="#999" vlink="black" alink="black">  

<div id="menu">
    <ul id="drop-down-menu">
    <li><%= link_to "Home Page", home_index_path, :class => current_page?(home_index_path) ? "current" : "" %></li> 
    <li><%= link_to "Bedrijfsgegevens", bedrijfsgegevens_path, :id => 'bednav' %>
    <ul>
        <li><%= link_to "Nieuw Bedrijf toevoegen", new_bedrijfsgegeven_path %></li>
    </ul> 
    </li> 
    <li><%= link_to "Contactpersonen", contactpersoons_path, :id => 'contanav' %>
    <ul> 
        <li><%= link_to "Nieuw Contactpersoon", new_contactpersoon_path %></li> 
    </ul> 
    </li>
    <li><%= link_to "Contractgegevens", contractgegevens_path(@contractgegevens), :id => 'contrnav' %>
    <ul> 
        <li><%= link_to "Nieuwe Contractgegevens", new_contractgegeven_path %></li> 
    </ul>
        <li><%= link_to "Contactformulier", contact_index_path, :id => 'formnav' %>        </li>
    <% if user_signed_in? %>
        <li><%= link_to "My Account", users_path(@users) %>
        <ul>
            <li><%= link_to "Uitloggen", destroy_user_session_path, :method => :delete %>
            <li><%= link_to "Gebruikers", user_registration_path %>
        </ul>
    <% else %>
        <li><%= link_to "Inloggen", new_user_session_path %>
        <ul>
            <li><%= link_to "Registreren", new_user_registration_path %>
        </ul>
    <% end %>
    </ul>   
  <p class="clear_all"></p>
</div>

<div id="login">
Inlogd als: <%= current_user.username %>
</div>

<div id="content">
  <hr>
    <% flash.each do |name, msg| %>
    <%= content_tag :div, msg, :id => "flash_#{name}" %>
    <% end %>
    <%= yield %>
 </div>

 <div id="footer">
    <hr color="#999", width="100%">
    <h4>
    <b><a href="http://piterjelles.nl">Piter Jelles</a> &copy; 2012 </b> | <a href="http://rubyonrails.org">Ruby on Rails </a> 
    </h4>
 </div>

 </font>    
 </body>
 </div>
 </html>

注意:我来自荷兰,所以我的 application.html.erb 中有荷兰语单词

4

2 回答 2

1

您需要检查 current_user 的存在,例如: <% if current_user.present? %> <%= current_user.email %> 或 <%= current_user.username %> <% end %>

于 2012-06-04T13:56:39.413 回答
1

当您退出时,当前用户将返回nil。调用方法nil会返回错误

1.9.3p125 :002 >   nil.username
NoMethodError: undefined method `username' for nil:NilClass

您必须检查 current_user 是否返回 nil 以外的值。您可以使用

<%= current_user.username if current_user %>
于 2012-06-04T13:58:11.230 回答