根据类(class)中的一个月 Rails 类(class):Pins Users and Associations
我必须在运行 rails console
后执行以下操作:
Pin.connection #This establishes a connection to the database (And spits out a LOT of unnecessary data)
Pin.inspect #shows all of the parameters for a Pin
CONTROL + D #closes the Console
pin = Pin.first #make sure Pin.first is UPPERCASE
pin.user
但是当我写 pin.user
时,我得到一个错误 NoMethodError: undefined method 'user' for nil:NilClass
我添加了 belongs_to :user
和 has_many :pins
我不明白为什么会出现该错误。
最佳答案
澄清一下,错误的产生是因为原始对象(在您的例子中是 @pin
)没有填充任何数据(因此它是 nil
)。
--
错误
很多初学者对这个错误感到困惑,其实很简单:
@pin.user
^ 这会调用 @pin
对象上的 .user
。 user
方法是根据您的 Rails 关联创建的 (belongs_to :user
),旨在为您提供关联数据。
您遇到的问题是您在未填充的对象(它是 'nil'
类的一部分)上调用 .user
,因此阻止了 .user
实际运行的方法。
--
修复
要解决这个问题,您应该这样做:
#app/controllers/pins_controller.rb
Class PinsController < ActieRecord::Base
def show
@pin = Pin.find params[:id] #-> or Pin.first
end
end
#app/views/pins/show.html.erb
<%= @pin.user %>
如果在此之后出现错误,通常意味着数据不一致(数据库中没有数据),或者系统的某些其他部分不一致。
关于ruby-on-rails - 未定义方法 'user' 为 nil :nilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23881073/