Ruby on rails Rails教程:NoMethodError:undefined方法'each';零级:零级

Ruby on rails Rails教程:NoMethodError:undefined方法'each';零级:零级,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,我是RubyonRails的新手,很可能错过了一些简单的东西 我一直在阅读迈克尔·哈特尔的教程。昨晚我停下来的时候一切都很好,但今天早上我的头撞到了墙上,试图找出这个错误 我在第8章:测试如清单8.25所示 我想我可能是打错了,所以我回到了今天早上开始的地方,直接从教程中复制了代码。不过,当我运行测试时,我得到 1) Error: StaticPagesControllerTest#test_should_get_about: ActiveRecord::Fixture::FormatError

我是RubyonRails的新手,很可能错过了一些简单的东西

我一直在阅读迈克尔·哈特尔的教程。昨晚我停下来的时候一切都很好,但今天早上我的头撞到了墙上,试图找出这个错误

我在第8章:测试如清单8.25所示

我想我可能是打错了,所以我回到了今天早上开始的地方,直接从教程中复制了代码。不过,当我运行测试时,我得到

1) Error:
StaticPagesControllerTest#test_should_get_about:
ActiveRecord::Fixture::FormatError: ActiveRecord::Fixture::FormatError


Error:
StaticPagesControllerTest#test_should_get_about:
NoMethodError: undefined method `each' for nil:NilClass
这以前从来都不是问题,所以这就是为什么我要把头撞到墙上

在这些错误之后,我开始

10) Error:
UserTest#test_name_should_not_be_too_long:
ActiveRecord::Fixture::FormatError: ActiveRecord::Fixture::FormatError
静态页面控制器测试

require 'test_helper'

class StaticPagesControllerTest < ActionController::TestCase

def setup
  @base_title = "Ruby on Rails Tutorial Sample App"
end

test "should get home" do
  get :home
  assert_response :success
  assert_select "title", "Ruby on Rails Tutorial Sample App"
end

test "should get help" do
  get :help
  assert_response :success
  assert_select "title", "Help | #{@base_title}"
end

test "should get about" do
  get :about
  assert_response :success
  assert_select "title", "About | #{@base_title}"
end

test "should get contact" do
  get :contact
  assert_response :success
  assert_select "title", "Contact | Ruby on Rails Tutorial Sample App"
end

end
这是固定装置

michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest('password') %>
用户模型

class User < ActiveRecord::Base
    before_save { self.email = email.downcase }
    validates :name, presence: true, length: { maximum: 50 }
    VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
    validates :email, presence: true, length: { maximum: 255 },
                      format: { with: VALID_EMAIL_REGEX },
                      uniqueness: { case_sensitive: false }

    has_secure_password
    validates :password, presence: true, length: { minimum: 6 }

    # Returns the hash digest of the given string.
      def User.digest(string)
        cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
                                                      BCrypt::Engine.cost
        BCrypt::Password.create(string, cost: cost)
      end
end
class用户
用户控制器

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  fixtures :all

  # Add more helper methods to be used by all tests here...
  # Returns true if a test user is logged in.
  def is_logged_in?
    !session[:user_id].nil?
  end
end
class SessionsController < ApplicationController

def new
end

def create
  user = User.find_by(email: params[:session][:email].downcase)
  if user && user.authenticate(params[:session][:password])
    # Log the user in and redirect to the user's show page.
    log_in user
    redirect_to user
  else
    # Create an error message.
    flash.now[:danger] = 'invalid email/password combination' # not
    quite right        
    render 'new'
  end
end

def destroy
end

end
module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Returns the current logged in user (if any)
  def current_user
    @current_user ||= User.find_by(id: session[:user_id])
  end

  # Returns true if the user is logged in, false otherwise
  def logged_in?
    !current_user.nil?
  end
end
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create 
    @user = User.new(user_params)
    if @user.save
        # handle a successful save
      log_in @user
        flash[:success] = "Welcome to the Sample App!"
        redirect_to @user
    else
        render 'new'
    end
  end

  private

    def user_params
        params.require(:user).permit(:name, :email, :password,
                                     :password_confirmation)
    end
end
class UsersController
任何帮助都将不胜感激! 如果还有其他需要发布的内容,请告诉我。

使用缩进(夹具):

迈克尔: 姓名:Michael Example 电邮:michael@example.com 密码摘要:
michael:
  name: Michael Example
  email: michael@example.com
  password_digest: <%= User.digest('password') %>