【问题标题】:Ruby on Rails Tutorial by Michael Hartl - chapter 9 - Ruby 2.3Michael Hartl 的 Ruby on Rails 教程 - 第 9 章 - Ruby 2.3
【发布时间】:2011-01-19 14:54:34
【问题描述】:

我正在学习 Michael Hartl 教程,但我卡在第 9 章。

我需要这个功能才能工作:

def 已登录? !当前用户 结束

但是这个函数总是返回 false 即使我登录了。 我很抱歉这个简单的问题, 但我是一个初学者,也花了很长时间 时间试图弄清楚。 我正在使用 ruby​​ 1.8.7 和 rails 2.3.8

先谢谢了!

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我怀疑代码应该读取

    def signed_in?
      current_user
    end
    

    在对current_user 的调用前面加上! 可以理解为“如果不是current_user,则返回true”。

    SessionsHelper 中的代码有错字。 :remember_token cookie 没有在 sign_in 方法中保存。它应该是:

    def sign_in(user)
      user.remember_me!
      cookies[:remember_token] = { :value => user.remember_token,
                                   :expires => 20.years.from_now.utc }
      self.current_user = user
    end
    

    不是:remember_toker

    【讨论】:

    • 嗨,我尝试使用 !current_user,也使用 !!current_user 并且没有任何 !。没有任何效果。我仍然看不到我是否已登录。
    • 我这里写错了,其实和教程里写的一模一样。我用这种方式测试过:!current_user.nil?,但它不起作用。
    • 编辑您的问题并将代码发布到current_user 以及您呼叫的位置signed_in?。那里可能有问题。
    • 嗨 Aaron,我将我的源代码推送到 github github.com/heber28/sample_app,请检查文件 sample_app/app/helpers/sessions_helper.rb 和 sample_app/app/views/layouts/_header.html.erb .我的问题是,为什么 current_user 总是 nil 如果在会话助手中它把一个值放进去。
    • 不客气。您应该接受答案,因为这将有助于您的支持率。
    【解决方案2】:

    您必须添加一个 .nil 吗?像这样给 current_user:

    def signed_in?
        !current_user.nil?
    end
    

    【讨论】:

      【解决方案3】:

      我有一个类似的问题,并决定向后工作。

      1)def signed_in? !current_user.nil? end。所以我寻找与登录相关的 current_user 的声明和定义

      2) 此处:def sign_in(user) cookies.permanent.signed[:remember_token] = [user.id, user.salt] self.current_user = user end。对我来说,token 拼写错误,然后解决了它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        相关资源
        最近更新 更多