Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 会话中的用户分配\u Helper Rails 3教程第9章_Ruby On Rails_Railstutorial.org - Fatal编程技术网

Ruby on rails 会话中的用户分配\u Helper Rails 3教程第9章

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

我正在使用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 %>

    <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