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