我正在使用 Rails 3.1.1 完成 Hartl 的教程书,一切正常,直到第 9 章并使用布局链接更新 _header.html.erb。一旦我对 _header.html.erb 和 spec/.../layout_links 进行更改,rspec 就会返回失败,并且本地网络服务器会返回错误消息而不是网页。问题似乎是 session_helper.rb 中的“用户”。我在本书的清单 9.26 中输入了以下代码:
<header>
<%= link_to logo, root_path %>
<nav class="round">
<ul>
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Help", help_path %></li>
<% if signed_in? %>
<li><%= link_to "Sign out", signout_path, :method => :delete %></li>
<% else %>
<li><%= link_to "Sign in", signin_path %></li>
<% end %>
</ul>
</nav>
</header>
执行此操作后,尝试在本地服务器上显示时收到错误消息:
undefined local variable or method `user' for #<#<Class:0x4f4b1d0>:0x4f3a370>
哪个可以追溯到 <% if signed_in? %>
我的 session_helper 文件是:
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def signed_in?
!current_user.nil?
end
def sign_out
cookies.delete(:remember_token)
current_user = nil
end
private
def user_from_remember_token
user.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
end
有人可以指出我解决问题的正确方向吗?