У меня есть следующие:Rails 4 has_many вопрос
в parent.rb
class Parent < ActiveRecord::Base
attr_accessor :parent_id
has_many :scouts
# Friendly ID
extend FriendlyId
friendly_id :full_name, :use => :slugged
# Synthesize fullname for use by FriendlyID
def full_name
"#{fname}-#{lname}"
end
def pretty_name
"#{fname} #{lname}"
end
end
в scout.rb
class Scout < ActiveRecord::Base
attr_accessor :scout_id, :fname, :lname
belongs_to :parents
has_many :insignia
# Friendly ID
extend FriendlyId
friendly_id :full_name, :use => :slugged
# Synthesize fullname for use by FriendlyID
def full_name
"#{fname}-#{lname}"
end
def pretty_name
"#{fname} #{lname}"
end
end
Я хочу, чтобы получить первое имя разведчика «, принадлежащего «родителем, поэтому в parent_controller.rb у меня есть:
def show
@parent = Parent.friendly.find(params[:id])
@id = @parent.id
@scout = Scout.where(:scout_id => @id).all
end
Поскольку я храню идентификатор разведчика в родительской модели, я сделал переменную из идентификатора, чтобы она соответствовала. В противном случае идентификатор никогда не будет соответствовать, потому что в этом случае params [: id] является дружественным id slug.
Как я могу вернуть отдельные атрибуты в модели скаутов внутри родительской модели? Например, я хочу получить первое имя разведчика, чей идентификатор совпадает с данным родителем. Но когда я делаю это, на мой взгляд:
<p>
<strong>Child:</strong>
<%= @scout.fname %>
</p>
Я получаю
undefined method `fname' for nil:NilClass
Я понимаю, что это довольно элементарные Rails, но это не так часто, что я строю многопользовательских систем, как это. Любая помощь или информация, которые могут пролить свет на отношения has_many, оценены.
Не повезло. Нет ошибки, но в представлении ничего не возвращается. Я знаю, что есть соответствующая запись, поэтому мне нужно вернуть имя. – nickmjones
Каждый метод также не получает меня. <% @ scouts.each do | s | %> <% = s.fname%> <% end -%> – nickmjones
ID родителя здесь равен 1. – nickmjones