Testing Hartl RoR第9.3.1章规范测试失败

Testing Hartl RoR第9.3.1章规范测试失败,testing,ruby-on-rails-3.2,railstutorial.org,Testing,Ruby On Rails 3.2,Railstutorial.org,我似乎到处都遇到了失败。。。我检查了我的代码,所有的东西都定义好了,拼写检查也在检查中。。。以下是我的失败…: Failures: 1) User pages index should list each user Failure/Error: visit users_path ActionView::Template::Error: wrong number of arguments (2 for 1) # ./app/helpers/user

我似乎到处都遇到了失败。。。我检查了我的代码,所有的东西都定义好了,拼写检查也在检查中。。。以下是我的失败…:

Failures:

  1) User pages index should list each user
     Failure/Error: visit users_path
     ActionView::Template::Error:
       wrong number of arguments (2 for 1)
     # ./app/helpers/users_helper.rb:4:in `gravatar_for'
     # ./app/views/users/index.html.erb:7:in `block in _app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./app/views/users/index.html.erb:5:in `each'
     # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>'

  2) User pages index 
     Failure/Error: visit users_path
     ActionView::Template::Error:
       wrong number of arguments (2 for 1)
     # ./app/helpers/users_helper.rb:4:in `gravatar_for'
     # ./app/views/users/index.html.erb:7:in `block in _app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./app/views/users/index.html.erb:5:in `each'
     # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>'

  3) User pages index 
     Failure/Error: visit users_path
     ActionView::Template::Error:
       wrong number of arguments (2 for 1)
     # ./app/helpers/users_helper.rb:4:in `gravatar_for'
     # ./app/views/users/index.html.erb:7:in `block in _app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./app/views/users/index.html.erb:5:in `each'
     # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb___3453469340594189774_70210782785680'
     # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>'

Finished in 1.87 seconds
70 examples, 3 failures

Failed examples:

rspec ./spec/requests/user_pages_spec.rb:18 # User pages index should list each user
rspec ./spec/requests/user_pages_spec.rb:16 # User pages index 
rspec ./spec/requests/user_pages_spec.rb:15 # User pages index 
用户\u controller.rb

class UsersController < ApplicationController
  before_filter :signed_in_user, only: [ :index, :edit, :update]
  before_filter :correct_user,   only: [:edit, :update]

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

  def index
    @users = User.all
  end

  def edit
  end

  def update
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
  end

  private

    def signed_in_user
      unless signed_in?
        store_location
        redirect_to signin_url, notice: "Please sign in."
      end
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    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])
      sign_in user
      redirect_back_or user
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    sign_out
    redirect_to root_url
  end
end
sussions_helper.rb

module SessionsHelper

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

  def current_user?(user)
    user == current_user
  end

  def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
  end

  def redirect_back_or(default)
    redirect_to(session[:return_to] || default)
    session.delete(:return_to)
  end

  def store_location
    session[:return_to] = request.url
  end
end
会话\u controller.rb

class UsersController < ApplicationController
  before_filter :signed_in_user, only: [ :index, :edit, :update]
  before_filter :correct_user,   only: [:edit, :update]

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

  def index
    @users = User.all
  end

  def edit
  end

  def update
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
  end

  private

    def signed_in_user
      unless signed_in?
        store_location
        redirect_to signin_url, notice: "Please sign in."
      end
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    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])
      sign_in user
      redirect_back_or user
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    sign_out
    redirect_to root_url
  end
end
class sessioncontroller

这里怎么了??有什么建议吗?

您需要清单7.29中的代码。它是用来编辑Gavatar的

清单7.29。为对象定义可选的:size参数 gravatar_作为助手

app/helpers/users\u helper.rb

module SessionsHelper

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

  def current_user?(user)
    user == current_user
  end

  def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
  end

  def redirect_back_or(default)
    redirect_to(session[:return_to] || default)
    session.delete(:return_to)
  end

  def store_location
    session[:return_to] = request.url
  end
end

您需要清单7.29中的代码。它是用来编辑Gavatar的

清单7.29。为对象定义可选的:size参数 gravatar_作为助手

app/helpers/users\u helper.rb

module SessionsHelper

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

  def current_user?(user)
    user == current_user
  end

  def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
  end

  def redirect_back_or(default)
    redirect_to(session[:return_to] || default)
    session.delete(:return_to)
  end

  def store_location
    session[:return_to] = request.url
  end
end

您的用户页面规格有以下不匹配的行

describe "index" do
    before do
      sign_in FactoryGirl.create(:user)
      FactoryGirl.create(:user, name: "Bob", email: "bob@example.com")
      FactoryGirl.create(:user, name: "Ben", email: "ben@example.com")
      visit users_path
    end

第9.3章没有Bob电子邮件等,您的用户页面规范中有这些不匹配的行

describe "index" do
    before do
      sign_in FactoryGirl.create(:user)
      FactoryGirl.create(:user, name: "Bob", email: "bob@example.com")
      FactoryGirl.create(:user, name: "Ben", email: "ben@example.com")
      visit users_path
    end
第9.3章没有鲍勃的电子邮件等