Ruby on rails 会话中的用户分配\u Helper Rails 3教程第9章
我正在使用Rails 3.1.1阅读Hartl的教程,在阅读第9章之前,一切正常,并使用布局链接更新_header.html.erb。一旦我对_header.html.erb和spec/../layout_链接进行了更改,rspec将返回失败消息,而本地Web服务器将返回错误消息,而不是网页。问题似乎是sessions_helper.rb中的“用户”。我输入了以下代码,如本书的清单9.26所示:Ruby on rails 会话中的用户分配\u Helper Rails 3教程第9章,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,我正在使用Rails 3.1.1阅读Hartl的教程,在阅读第9章之前,一切正常,并使用布局链接更新_header.html.erb。一旦我对_header.html.erb和spec/../layout_链接进行了更改,rspec将返回失败消息,而本地Web服务器将返回错误消息,而不是网页。问题似乎是sessions_helper.rb中的“用户”。我输入了以下代码,如本书的清单9.26所示: <header> <%= link_to logo, root_path
<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>
谁能给我指出解决问题的正确方向吗?我相信你的建议
def user_from_remember_token
user.authenticate_with_salt(*remember_token)
end
应为:(用户应大写)
我假设您的用户类中有身份验证代码。在user\u from\u memory\u标记中,您将引用类方法,因为此时您没有用户实例化。非常感谢。这很管用,我很尴尬,因为我在追踪问题的过程中错过了这么简单的东西,却没有抓住它。每个人都会遇到这种情况——特别是在像Ruby这样的非强类型语言中
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
def user_from_remember_token
user.authenticate_with_salt(*remember_token)
end
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end