Ruby on rails 3.2 迈克尔·哈特尔。3.2第7.17章用户中的命名错误#新线4
在这个论坛上搜索之后,我发现我在这个问题上停滞不前。我运行的是rails 3.2.1和ruby 1.9.3 我非常仔细地阅读了Hartl的书,在测试和呈现注册页面时遇到了一个错误 以下是一些跟踪的错误:Ruby on rails 3.2 迈克尔·哈特尔。3.2第7.17章用户中的命名错误#新线4,ruby-on-rails-3.2,Ruby On Rails 3.2,在这个论坛上搜索之后,我发现我在这个问题上停滞不前。我运行的是rails 3.2.1和ruby 1.9.3 我非常仔细地阅读了Hartl的书,在测试和呈现注册页面时遇到了一个错误 以下是一些跟踪的错误: undefined method `model_name' for NilClass:Class Extracted source (around line #4): 1: <% provide(:title, 'Sign up') %> 2: <h1>Sign up
undefined method `model_name' for NilClass:Class
Extracted source (around line #4):
1: <% provide(:title, 'Sign up') %>
2: <h1>Sign up</h1>
3:
4: <%= form_for(@user) do |f| %>
5: <div class="field">
6: <%= f.label :name %><br />
7: <%= f.text_field :name %>
Rails.root: /Users/Brian/Sites/rails/brightspot_1-1
Application Trace | Framework Trace | Full Trace
app/views/users/new.html.erb:4:in
`_app_views_users_new_html_erb___4096651331723577149_70289685515940'
以及来自rspec的错误消息:
Failures:
1) User pages signup with invalid information should not create a user
Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `model_name' for NilClass:Class
# ./app/views/users/new.html.erb:4:in
`_app_views_users_new_html_erb___947544063866573638_70125101083220'
# ./spec/requests/user_pages_spec.rb:17:in `block (3 levels) in <top (required)>'
2) User pages signup with valid information should create a user
Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `model_name' for NilClass:Class
# ./app/views/users/new.html.erb:4:in
`_app_views_users_new_html_erb___947544063866573638_70125101083220'
# ./spec/requests/user_pages_spec.rb:17:in `block (3 levels) in <top (required)>'
Finished in 0.20414 seconds
2 examples, 2 failures
故障:
1) 使用无效信息注册的用户页面不应创建用户
失败/错误:在{访问注册路径}之前
ActionView::模板::错误:
NilClass:Class的未定义方法“model_name”
#./app/views/users/new.html.erb:4:in
`_应用程序视图用户新html erb 7012511083220'
#./spec/requests/user\u pages\u spec.rb:17:in'block(3层)in'
2) 使用有效信息注册的用户页面应创建一个用户
失败/错误:在{访问注册路径}之前
ActionView::模板::错误:
NilClass:Class的未定义方法“model_name”
#./app/views/users/new.html.erb:4:in
`_应用程序视图用户新html erb 7012511083220'
#./spec/requests/user\u pages\u spec.rb:17:in'block(3层)in'
以0.20414秒完成
2例,2次失败
在此方面的任何帮助都将不胜感激。提前感谢您,Brian。当您传递给form_for的
@user
对象为nil时,会发生此错误。如果查看控制器,new
方法定义了两次,在第二个定义中,它不会实例化@user
对象
删除控制器中
新方法的第二个(空)定义,您应该可以开始了。如果它有效,那么您应该用正确的答案奖励@wpgreenway。
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def new
end
end
require 'spec_helper'
describe "User pages" do
subject { page }
describe "profile page" do
let(:user) { FactoryGirl.create(:user) }
before { visit user_path(user) }
it { should have_selector('h1', text: user.name) }
it { should have_selector('title', text: user.name) }
end
describe "signup" do
before { visit signup_path }
describe "with invalid information" do
it "should not create a user" do
expect { click_button "Sign up" }.not_to change(User, :count)
end
end
describe "with valid information" do
before do
fill_in "Name", with: "Example User"
fill_in "Email", with: "user@example.com"
fill_in "Password", with: "foobar"
fill_in "Confirmation", with: "foobar"
end
it "should create a user" do
expect { click_button "Sign up" }.to change(User, :count).by(1)
end
end
end
end
Failures:
1) User pages signup with invalid information should not create a user
Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `model_name' for NilClass:Class
# ./app/views/users/new.html.erb:4:in
`_app_views_users_new_html_erb___947544063866573638_70125101083220'
# ./spec/requests/user_pages_spec.rb:17:in `block (3 levels) in <top (required)>'
2) User pages signup with valid information should create a user
Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `model_name' for NilClass:Class
# ./app/views/users/new.html.erb:4:in
`_app_views_users_new_html_erb___947544063866573638_70125101083220'
# ./spec/requests/user_pages_spec.rb:17:in `block (3 levels) in <top (required)>'
Finished in 0.20414 seconds
2 examples, 2 failures