![](/img/trans.png)
[英]Michael Hartl's Tutorial Ch. 2: NoMethodError: undefined method `microposts' for nil:NilClass
[英]Michael Hartl Ruby on Rails Tutorial Chapter 11 NoMethodError: undefined method `microposts' for nil:NilClass
我正在嘗試遵循Michael Hartl的Ruby on Rails教程,並且目前停留在第11章。我不知道如何解決這些錯誤:
1) Error:
UsersIndexTest#test_index_as_admin_including_pagination_and_delete_links:
NoMethodError: undefined method `microposts' for nil:NilClass
app/controllers/users_controller.rb:14:in `index'
test/integration/users_index_test.rb:12:in `block in <class:UsersIndexTest>'
2) Error:
UsersIndexTest#test_index_as_non-admin:
NoMethodError: undefined method `microposts' for nil:NilClass
app/controllers/users_controller.rb:14:in `index'
test/integration/users_index_test.rb:29:in `block in <class:UsersIndexTest>'
中的問題代碼
app/controllers/users_controller.rb
是第14行,或@microposts = @user.microposts.paginate(page: params[:page])
。 添加后,測試開始失敗。
def index
@users = User.paginate(page: params[:page])
@microposts = @user.microposts.paginate(page: params[:page])
end
我以為協會有問題,但我有
class Micropost < ActiveRecord::Base
belongs_to :user
.
.
.
end
和
class User < ActiveRecord::Base
has_many :microposts
.
.
.
end
我的一些測試也可以與@ user.micropost一起使用
class MicropostTest < ActiveSupport::TestCase
def setup
@user = users(:michael)
@micropost = @user.microposts.build(content: "Lorem ipsum")
end
test "should be valid" do
assert @micropost.valid?
end
所以我不知道出什么問題了。 如果有人可以幫助,那就太好了。
我想您希望@microposts參與演出。
您的索引方法分配一個@users
實例變量。 然后,您嘗試在尚未分配的@user
(注意不要是復數)變量上調用microposts
@user
。 在ruby中,任何尚未分配值的實例變量均為nil
。
我不清楚您要完成什么工作,但是您只能在單個User
對象的實例上調用microposts
,而不能在已分配給@users
的集合上調用microposts
@users
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.