簡體   English   中英

Michael Hartl Ruby on Rails教程第11章NoMethodError:nil:NilClass的未定義方法“ microposts”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM