Rails 3.1과 Mongoid에서 일대 다 관계로 작업 할 때, Nil 클래스의 정의되지 않은 메서드 인`name '에 머리를 부딪 치고 있습니다. 비록 내가 긍정적이라 할지라도 그것은 존재합니다. 어리석은 실수이거나 몽고 이드에게 잘못된 것이 있습니다. 나는이 오류가 계속Mongoid : 정의되지 않은 메서드 'name'for nil : NilClass (존재하는 경우에도)
:
NoMethodError in Leads#index
Showing /app/views/leads/index.html.haml where line #19 raised:
undefined method `heat' for nil:NilClass
Extracted source (around line #19):
16: - @leads.each do |lead|
17:
18: %tr
19: %td #{lead.visit.heat}°
20: %td
21: = link_to lead.name, :controller => "leads", :action => "show", :id => lead.id
을 그리고 콘솔이 재현하려고 할 때, 위대한 작동하는 것 같다의 정교 보자. 참으로 경탄스러운 .. 여기
관련 장소의 코드입니다 :
-------------------------*SCHNIP*------------------------------------
class Company
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
has_one :visit
def self.get_companies
visits = Visit.get_visits
companies = self.all
visits.each do |visit|
unless companies.name.include?(visit.name)
new_company = self.new
new_company.name = visit.name
new_company.visit = visit
new_company.save
end
end
#return companies for current instance
return Company.where(:visit.exists => true)
end
end
-------------------------*SCHNIP*------------------------------------
class Visit
include Mongoid::Document
include Mongoid::Timestamps
field :heat, type: Integer
field :name, type: String
belongs_to :company
def self.get_visits
return self.all
end
end
-------------------------*SCHNIP*------------------------------------
class LeadsController < ApplicationController
def index
@selected = 'visitors'
@leads = Company.get_companies
end
end
-------------------------*SCHNIP*------------------------------------
app/views/leads/index.html.haml
- @leads.each do |lead|
%tr
%td #{lead.visit.heat}°
%td
= link_to lead.name, :controller => "leads", :action => "show", :id => lead.id
-------------------------*SCHNIP*------------------------------------
이것은 내가 생각하는 정답입니다. –