2013-10-06 24 views
0

我下面Rails的教程,並告訴我在靜態頁面控制器來輸入:NoMethodError軌找不到我的方法「喂」 - Rails的教程

def home 
    if signed_in? 
     @micropost = current_user.microposts.build 
     @feed_items = current_user.feed.paginate(page: params[:page]) 
    end 
end 

這裏是RSpec的測試結果:

Failures: 

    1) Static Pages Home Page for signed in users should render user's feed 
    ←[31mFailure/Error:←[0m ←[31mvisit root_path←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x5ae7480>←[0m 
←[36m  # ./app/controllers/static_pages_controller.rb:6:in `home'←[0m 
←[36m  # ./spec/requests/static_pages_spec.rb:29:in `block (4 levels) in <top (required)>'←[0m 

    2) User 
    ←[31mFailure/Error:←[0m ←[31mit { should respond_to(:feed) }←[0m 
     ←[31mexpected #<User id: nil, name: "Tim Green", email: "[email protected]", created_at: nil, updated_at: nil, password_digest: "$2a$04$5zT 
aqLxQ5E6zT5DU.gGmaeS2qV9ypLOBdwJiXxu8WkjN...", remember_token: nil, admin: false> to respond to :feed←[0m 
←[36m  # ./spec/models/user_spec.rb:32:in `block (2 levels) in <top (required)>'←[0m 

    3) User micropost associations status feed 
    ←[31mFailure/Error:←[0m ←[31mits(:feed) { should_not include(unfollowed_post) }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x5bb1c80>←[0m 
←[36m  # ./spec/models/user_spec.rb:173:in `block (4 levels) in <top (required)>'←[0m 

    4) User micropost associations status feed 
    ←[31mFailure/Error:←[0m ←[31mits(:feed) { should include(older_micropost) }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x5bdfdd8>←[0m 
←[36m  # ./spec/models/user_spec.rb:172:in `block (4 levels) in <top (required)>'←[0m 

    5) User micropost associations status feed 
    ←[31mFailure/Error:←[0m ←[31mits(:feed) { should include(newer_micropost) }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x5c6f718>←[0m 
←[36m  # ./spec/models/user_spec.rb:171:in `block (4 levels) in <top (required)>'←[0m 

    6) Authentication authorization as wrong user visiting edit page for different user 
    ←[31mFailure/Error:←[0m ←[31mbefore { visit edit_user_path(wrong_user) }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x6149358>←[0m 
←[36m  # ./app/controllers/static_pages_controller.rb:6:in `home'←[0m 
←[36m  # ./spec/requests/authentication_pages_spec.rb:110:in `block (5 levels) in <top (required)>'←[0m 

    7) Micropost pages micropost creation with invalid information should not create a micropost 
    ←[31mFailure/Error:←[0m ←[31mbefore { visit root_path }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x61a3df0>←[0m 
←[36m  # ./app/controllers/static_pages_controller.rb:6:in `home'←[0m 
←[36m  # ./spec/requests/micropost_pages_spec.rb:11:in `block (3 levels) in <top (required)>'←[0m 

    8) Micropost pages micropost creation with invalid information error messages 
    ←[31mFailure/Error:←[0m ←[31mbefore { visit root_path }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x43aaba0>←[0m 
←[36m  # ./app/controllers/static_pages_controller.rb:6:in `home'←[0m 
←[36m  # ./spec/requests/micropost_pages_spec.rb:11:in `block (3 levels) in <top (required)>'←[0m 

    9) Micropost pages micropost creation with valid information should create a micropost 
    ←[31mFailure/Error:←[0m ←[31mbefore { visit root_path }←[0m 
    ←[31mNoMethodError:←[0m 
     ←[31mundefined method `feed' for #<User:0x5a73f50>←[0m 
←[36m  # ./app/controllers/static_pages_controller.rb:6:in `home'←[0m 
←[36m  # ./spec/requests/micropost_pages_spec.rb:11:in `block (3 levels) in <top (required)>'←[0m 

Finished in 7.74 seconds 
←[31m114 examples, 9 failures←[0m 

基本上它是爲「進料」方法返回NoMethodError,我理解錯誤,但我找不到在哪裏定義這個方法,如何做到這一點,在思路中披露將返回新聞提要,有什麼幫助?

回答

1

的錯誤給你的提示。這一個:

undefined method `feed' for #<User:0x5ae7480> 

表明你有類用戶的實例,代碼試圖找到用戶的該實例命名爲feed實例方法。

還有一個失敗的測試這篇直接測試:

expected #<User id: nil, name: "Tim Green", email: "[email protected]", 
created_at: nil, updated_at: nil, password_digest: "$2a$04$5zTaqLxQ5E6zT5DU.gGmaeS2qV9ypLOBdwJiXxu8WkjN...", 
remember_token: nil, admin: false> to respond to :feed 

這是user_spec.rb並明確地說,一個用戶實例應回覆信息(這是另一種說法「的方法呼叫「)名爲feed

這意味着你需要去您的user.rb並添加def feed和實施方法,以返回你想讓它返回的內容。

相關問題