Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 Rails 3设计会话有值,但<;%如果用户登录?%&燃气轮机;是假的_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails 3设计会话有值,但<;%如果用户登录?%&燃气轮机;是假的

Ruby on rails Rails 3设计会话有值,但<;%如果用户登录?%&燃气轮机;是假的,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我希望你能帮上忙,我已经为此挣扎了一段时间了:| 我正在使用Desive和Rails 3 当我点击登录时,我会进入设计登录页面,输入用户名和密码,然后点击登录 单击登录后,我被重定向到主页,但现在我仍然看到登录链接,这意味着这仍然是错误的。但是在我登录之后,session变量中似乎有一些值,这是怎么回事?我使用Desive已经有一段时间了,以前没有任何问题。谢谢大家! 使用Desive登录之前 <%= session %> no value <% if user_signe

我希望你能帮上忙,我已经为此挣扎了一段时间了:| 我正在使用Desive和Rails 3

当我点击登录时,我会进入设计登录页面,输入用户名和密码,然后点击登录

单击登录后,我被重定向到主页,但现在我仍然看到登录链接,这意味着这仍然是错误的。但是在我登录之后,session变量中似乎有一些值,这是怎么回事?我使用Desive已经有一段时间了,以前没有任何问题。谢谢大家!
使用Desive登录之前

<%= session %>
no value

<% if user_signed_in? %>
**is false**
<%= session %>
_csrf_tokenAMUwVLu6G6rWfKICB43PYApFsYFRjVyJDSc2oU88uEk=warden.user.user.keyUser342$2a$10$.zslfggeUqvq.m/5LNSolOsession_id0db80c26bc36a4c1c74c223655dcb092

<% if user_signed_in? %>
**is false**

<% if signed_in? %>
**is still false**

在我删除此块后,它似乎工作得很好:)

Desive有一个“范围”的概念,因此您可以同时登录多种类型的用户,例如管理员用户和普通用户。要检查任何作用域的用户是否已登录,请使用
signed\u-in?
。范围由模型类的命名和
routes.rb
文件定义。确保它们匹配。你能把两者都寄出去吗?要测试这一点,您还可以尝试集成测试。

我在这方面也遇到了问题。这很有趣,因为
user\u signed\u in?
应该比
current\u user
更可靠,但这似乎表明了我的怀疑——它实际上不太可靠


如果有人发现不一样的东西,请告诉我们。

各位,我一直在努力解决同一问题,最终找到了解决方案!这可能不是你的情况,但仍然是

我的问题发生在我从简单的手写身份验证过程切换到Desive时。以及当前用户或用户登录的原因?登录时都是空白和错误的是,我在sessions\u helper.rb文件中有类似的命名方法(sign\u in、current\u user等),这些方法是从旧系统保留的,这些(旧)方法是从全新的Desive controller调用的,而不是从Desive库调用的


所以,我只是注释掉了旧会话助手中服务于身份验证过程的所有方法。然后它成功了

正如@Irina Nazarova所说。检查以确保项目中没有任何与您自己编写的名称相同的方法。看来Deave是先用这个的。这就是导致我的问题的原因。

我总是使用与kishie相同的
(如果当前用户
:)。我也总是检查当前用户。可以吗?你也可以发布你的user.rb文件吗?
<% if signed_in? %>
**is still false**
class User < ActiveRecord::Base
      # Include default devise modules. Others available are:
      # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
      devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :trackable, :validatable

      # Setup accessible (or protected) attributes for your model
      attr_accessible :email, :password, :password_confirmation, :remember_me
    end
    #facebook stuff
    def current_user
        @current_user ||= User.find_by_id(session[:user_id])
    end

    def signed_in?
        !!current_user
    end

    helper_method :current_user, :signed_in?

    def current_user=(user)
        @current_user = user
        session[:user_id] = user.id
    end
    #facebook stuff