Ruby on rails don';t工作复选框“;“记住我”;在;“登录”;类型

Ruby on rails don';t工作复选框“;“记住我”;在;“登录”;类型,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,大家好。 我正在学习Rails教程第8章“登录,注销”(第3版) 在清单8.58中,我在集成测试中遇到了一个错误 FAIL["test_current_user_returns_right_user_when_session_is_nil" --- expected +++ actual @@ -1 +1 @@ -#<User id: 762146111, name: "Michael Example", email: "michael@example.com", created_at:

大家好。 我正在学习Rails教程第8章“登录,注销”(第3版)

在清单8.58中,我在集成测试中遇到了一个错误

FAIL["test_current_user_returns_right_user_when_session_is_nil"
--- expected
+++ actual
@@ -1 +1 @@
-#<User id: 762146111, name: "Michael Example", email: "michael@example.com", 
created_at:      "2014-11-25 08:52:36", updated_at: "2014-11-25 08:52:36",       
password_digest: "$2a$04$PqPt.GZHyu3xKlQWh4UJM./y7pEz2w9Twp2XOlg0Eor...",
remember_digest: "$2a$04$hDNgctx0rqYZq9sH4ZO3Lu1MfkfGKtXgdN11Lhv.yVD...">
+nil
test/helpers/sessions_helper_test.rb:11:in `block in <class:SessionsHelperTest>'
我的会话\u controller.rb

  def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
  log_in user
  params[:session][:remember_me] == '1' ? remember(user) : forget(user)
  redirect_to user
else
  flash.now[:danger] = 'Invalid email/password combination' # Not quite right!
  render 'new'
end
end
我的会话\u helper.rb

test "current_user returns right user when session is nil" do
assert_equal @user, current_user #in this line i have an error
assert is_logged_in?
end
      # Forgets a persistent session.
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
还有我的表格和复选框

<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(:session, url: login_path) do |f| %>

  <%= f.label :email %>
  <%= f.text_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control' %>

  <%= f.label :remember_me, class: "checkbox inline" do %>
    <%= f.check_box :remember_me %>
    <span>Remember me on this computer</span>
  <% end %>

  <%= f.submit "Log in", class: "btn btn-primary" %>
<% end %>

<p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>
</div>

还记得我在这台电脑上吗
新用户

我绞尽脑汁。。多谢各位


我想,我在这个复选框中有一个错误的工作,如果它没有标记,我的会话仍然工作,并且只有当我按下“注销链接”时,用户会话才会退出。

我正在遵循相同的教程(我在第9章末尾)

我看到你说的是
session\u helper.rb
的一部分,但是我的测试匹配代码
“当前用户在会话为零时返回正确的用户”
位于
test\helpers\sessions\u helper\u test.rb

你介意把那个文件的全部内容张贴出来吗?下面是该文件前8行的一个片段(除了实际测试之外的所有内容)。我倾向于相信您忘记添加设置方法:

require 'test_helper'

class SessionsHelperTest < ActionView::TestCase

  def setup
    @user = users(:xxx) # Where xxx is the name of the user in users.yml
    remember(@user)
  end
.
.
.
end
需要“测试助手”
类SessionHelperTest
尝试使用
@current\u user
代替
current\u user
current_user
是一个在测试范围内找不到的局部变量,而
@current_user
是一个全局可访问的实例变量。希望对您有所帮助。

一旦尝试使用
assert_equal user,current_user\35;这一行我有一个错误
NameError:undefined local variable或method`user'