#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
У меня есть набор вложенных моделей, сгруппированный следующим образом, где c — это соединение b и x
b принадлежит a / у a много b, c принадлежит b / у b много c, c принадлежит x / у x много c
В форме я хочу отобразить c.x_name (где x_name находится в таблице x) в следующем вложенном цикле, который идет вниз по a> b > c стороне иерархии
for b in a.b's
for c in b.c's
c.x_name
Я пробовал использовать свою команду show как c.show_x_name(c.id ), а затем помещаем следующее в модель c
def show_x_name(x_id)
X.where(:id => x_id)
end
Однако я получаю неизвестный ключ (ы): ошибка идентификатора из представления. Изменение ruby в представлении на c.id отображает правильное число.
Это моя первая попытка в Rails 3… чего мне не хватает?
Спасибо!
Комментарии:
1. Дайте вашим моделям разумные имена, a, b, c, x и т.д. Трудно следовать.
Ответ №1:
Ну, я заблудился во всех этих a, b, c и x-es. Но взгляните на руководства
добавьте belongs_to :x
в свою c-модель и a has_many :cs
в свою x-модель. Тогда вы должны быть в состоянии использовать c.x.name
Но c.x
может возвращать nil, если c не имеет отношения к x .
Кстати, лучше либо дать нам правильные имена, либо некоторые имена, которые могут соответствовать вашему оригиналу.
И есть ли у вас id
атрибут в вашей x-database?
Terw