我正在关注railsstutorial,现在已经进入了标题将根据用户是否登录而动态变化的点,使用条件下拉列表,如下所示
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="container">
<%= link_to "sample app", root_path, id: "logo" %>
<nav>
<ul class="nav navbar-nav navbar-right">
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Help", help_path %></li>
<% if logged_in? %>
<li><%= link_to "Users", '#' %></li>
<li 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 "Log out", logout_path, method: "delete" %>
</li>
</ul>
</li>
<% else %>
<li><%= link_to "Log in", login_path %></li>
<% end %>
</ul>
</nav>
这是logged_in?帮助器中定义的方法
module SessionsHelper
# Logs in the given user.
def log_in(user)
session[:user_id] = user.id
end
# Returns the current logged-in user (if any).
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
# Returns true if the user is logged in, false otherwise.
def logged_in?
!current_user.nil?
end
end
由于某些原因,这不起作用,尽管我已经完全复制了教程。我不确定是否未调用行(if_logged_in?)或调用它但返回false。 else块以
的方式执行我想知道无论如何我可以检查帮助器中定义的方法(logged_in?)是否正常工作并被正确调用?比如打印方法本身的输出?
答案 0 :(得分:0)
检查该方法是否被调用以及其中发生了什么的快速方法是在其中抛出调试语句,如下所示:
def logged_in?
Rails.logger.debug("\n\n *** logged_in? #{current_user}")
!current_user.nil?
end
您加载页面,然后查看开发日志,看看该行是否存在,以及用户是否存在。
有关调试的更多详细信息,请参阅http://guides.rubyonrails.org/debugging_rails_applications.html。
希望有所帮助。