2013-12-14 4 views
-1

Может ли кто-нибудь, кто сделал это упражнение, помочь мне?Ошибка/ошибка с Ruby on Rails Tutorial Chapter 9

Это мой первый опыт использования этого языка программирования и не так много, но мне нужно закончить до 10-й главы, что является окончательной оценкой.

1) User pages edit with valid information 
    Failure/Error: describe "page" do 
    NoMethodError: 
     undefined method `describe' for #<RSpec::Core::ExampleGroup::Nested_5::Nested_5::Nested_1:0xc283f8c> 
    # ./spec/requests/user_pages_spec.rb:87:in `block (3 levels) in <top (required)>' 

    2) User pages edit with valid information 
    Failure/Error: describe "page" do 
    NoMethodError: 
     undefined method `describe' for #<RSpec::Core::ExampleGroup::Nested_5::Nested_5::Nested_1:0xb67b1cc> 
    # ./spec/requests/user_pages_spec.rb:87:in `block (3 levels) in <top (required)>' 

    3) User pages edit with valid information 
    Failure/Error: describe "page" do 
    NoMethodError: 
     undefined method `describe' for #<RSpec::Core::ExampleGroup::Nested_5::Nested_5::Nested_1:0xc224244> 
    # ./spec/requests/user_pages_spec.rb:87:in `block (3 levels) in <top (required)>' 

    4) User pages edit with valid information 
    Failure/Error: describe "page" do 
    NoMethodError: 
     undefined method `describe' for #<RSpec::Core::ExampleGroup::Nested_5::Nested_5::Nested_1:0xc562690> 
    # ./spec/requests/user_pages_spec.rb:87:in `block (3 levels) in <top (required)>' 

    5) User pages edit with valid information 
    Failure/Error: describe "page" do 
    NoMethodError: 
     undefined method `describe' for #<RSpec::Core::ExampleGroup::Nested_5::Nested_5::Nested_1:0xc0559a4> 
    # ./spec/requests/user_pages_spec.rb:87:in `block (3 levels) in <top (required)>' 

    6) User pages index 
    Failure/Error: visit users_path 
    ActionView::Template::Error: 
     undefined method `each' for nil:NilClass 
    # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb__615083638_97671840' 
    # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>' 

    7) User pages index 
    Failure/Error: visit users_path 
    ActionView::Template::Error: 
     undefined method `each' for nil:NilClass 
    # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb__615083638_97671840' 
    # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>' 

    8) User pages index should list each user 
    Failure/Error: visit users_path 
    ActionView::Template::Error: 
     undefined method `each' for nil:NilClass 
    # ./app/views/users/index.html.erb:5:in `_app_views_users_index_html_erb__615083638_97671840' 
    # ./spec/requests/user_pages_spec.rb:12:in `block (3 levels) in <top (required)>' 

    9) Authentication authorization after signing in should render the desired protected page 
    Failure/Error: expect(page).to have_title('Edit user') 
     expected #has_title?("Edit user") to return true, got false 
    # ./spec/requests/authentication_pages_spec.rb:84:in `block (4 levels) in <top (required)>' 

Finished in 2.25 seconds 
72 examples, 9 failures 

Failed examples: 

rspec ./spec/requests/user_pages_spec.rb:114 # User pages edit with valid information 
rspec ./spec/requests/user_pages_spec.rb:115 # User pages edit with valid information 
rspec ./spec/requests/user_pages_spec.rb:112 # User pages edit with valid information 
rspec ./spec/requests/user_pages_spec.rb:113 # User pages edit with valid information 
rspec ./spec/requests/user_pages_spec.rb:111 # User pages edit with valid information 
rspec ./spec/requests/user_pages_spec.rb:15 # User pages index 
rspec ./spec/requests/user_pages_spec.rb:16 # User pages index 
rspec ./spec/requests/user_pages_spec.rb:18 # User pages index should list each user 
rspec ./spec/requests/authentication_pages_spec.rb:83 # Authentication authorization after signing in should render the desired protected page 

Редактировать

Вот мой код:

require 'spec_helper' 

describe "User pages" do 

    subject { page } 

    describe "index" do 
    before do 
     sign_in FactoryGirl.create(:user) 
     FactoryGirl.create(:user, name: "Bob", email: "[email protected]") 
     FactoryGirl.create(:user, name: "Ben", email: "[email protected]") 
     visit users_path 
    end 

    it { should have_title('All users') } 
    it { should have_content('All users') } 

    it "should list each user" do 
     User.all.each do |user| 
     expect(page).to have_selector('li', text: user.name) 
     end 
    end 
    end 

    describe "profile page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit user_path(user) } 

    it { should have_content(user.name) } 
    it { should have_title(user.name) } 
    end 

    describe "signup page" do 
    before { visit signup_path } 

    it { should have_content('Sign up') } 
    it { should have_title(full_title('Sign up')) } 
    end 

    describe "signup" do 

    before { visit signup_path } 

    let(:submit) { "Create my account" } 

    describe "with invalid information" do 
     it "should not create a user" do 
     expect { click_button submit }.not_to change(User, :count) 
     end 
     describe "after submission" do 
     before { click_button submit } 

     it { should have_title('Sign up') } 
     it { should have_content('error') } 
     end 
    end 

    describe "with valid information" do 
     before do 
     fill_in "Name",   with: "Example User" 
     fill_in "Email",  with: "[email protected]" 
     fill_in "Password",  with: "foobar" 
     fill_in "Confirmation", with: "foobar" 
     end 

     it "should create a user" do 
     expect { click_button submit }.to change(User, :count).by(1) 
     end 

     describe "after saving the user" do 
     before { click_button submit } 
     let(:user) { User.find_by(email: '[email protected]') } 

     it { should have_link('Sign out') } 
     it { should have_title(user.name) } 
     it { should have_selector('div.alert.alert-success', text: 'Welcome') } 
     end 
    end 
    end 

    describe "edit" do 
     let(:user) { FactoryGirl.create(:user) } 
    before do 
     sign_in user 
     visit edit_user_path(user) 

    describe "page" do 
     it { should have_content("Update your profile") } 
     it { should have_title("Edit user") } 
     it { should have_link('change', href: 'http://gravatar.com/emails') } 
    end 

    describe "with invalid information" do 
     before { click_button "Save changes" } 

     it { should have_content('error') } 
    end 
    end 

    describe "with valid information" do 
     let(:new_name) { "New Name" } 
     let(:new_email) { "[email protected]" } 
     before do 
     fill_in "Name",    with: new_name 
     fill_in "Email",   with: new_email 
     fill_in "Password",   with: user.password 
     fill_in "Confirm Password", with: user.password 
     click_button "Save changes" 
     end 

     it { should have_title(new_name) } 
     it { should have_selector('div.alert.alert-success') } 
     it { should have_link('Sign out', href: signout_path) } 
     specify { expect(user.reload.name).to eq new_name } 
     specify { expect(user.reload.email).to eq new_email } 
    end 
    end 
end 
+1

Мы не можем помочь вам исправить ваш код, если вы не предоставляете какой-либо код и не указываете, как его запускаете. – Johnsyweb

+0

Я отмечаю, что ошибки состоят из двух классов user_pages_spec – user3100662

+0

Вы, кажется, разместили [пример кода из учебника] (https://github.com/railstutorial/sample_app_2nd_ed/blob/master/spec/requests/user_pages_spec.rb), но не указаны любые детали относительно того, что вы с ним сделали или как вы пытаетесь запустить код. – Johnsyweb

ответ

1

Если код отформатирован так:

describe "edit" do 
    let(:user) { FactoryGirl.create(:user) } 
before do 
    sign_in user 
    visit edit_user_path(user) 

describe "page" do 
    it { should have_content("Update your profile") } 
    it { should have_title("Edit user") } 
    it { should have_link('change', href: 'http://gravatar.com/emails') } 
end 

я могу видеть, что это, вероятно, сломана без чтения какого-либо кода.

Все ли ваши блоки кода правильно закрыты? Не выглядит так!

+0

Да, спасибо, и я разрешил проблему, я плохо описал, я полностью изменяю и запускаю – user3100662

+0

, поэтому отметьте ответ как разрешенный! – phoet

0

В дополнении к незакрытым блокам, которые phoet указывала, которые вызывают ваш «неопределенный метод описание» ошибка, вы получаете ошибки в /app/views/users/index.html.erb строке 5. Ошибка undefined method `each' for nil:NilClass что означает, что есть переменный в этой строке, что вы 'do variable.each, но вы либо не устанавливаете эту переменную, либо когда вы ее устанавливаете, она устанавливается в nil.

В общем, путь для вас, чтобы успешно пройти через это, - это прочитать сообщения об ошибках и попытаться исправить то, о чем они жалуются. Если вы будете искать каждое сообщение об ошибке индивидуально, вы найдете проблемы переполнения стека по конкретной проблеме, которая вам поможет.

Смежные вопросы