2011-01-24 4 views
1

У меня действительно проблемы с тем, что, по моему мнению, является относительно легкой проблемой и, вероятно, очень легко исправлено с чем-то, что я, возможно, делаю неправильно.Показать дочерние значения в родительском представлении

У меня есть модель Person и модель отдела.

Отношения являются Person has_one: отдел, и отдел belongs_to: человека

На мой взгляд, когда я зацикливание собрать атрибуты человека, я хочу, чтобы иметь возможность получить доступ к имени отдела. У меня есть department_id как внешний ключ в таблице Person, поэтому я могу видеть действительный идентификатор для каждого отдела людей, но как я могу указать этот идентификатор для получения имени отдела.

<% @people.each do |p| %> 
    <%= p.name %> 
    <%= p.tel_num %> 
    <%= p.department_id %> <- i want this to somehow display the name of department 
<% end %> 

Я пробовал различные вещи, p.department.name, p.department_id.name

NO УДАЧИ !!

Очень сложно, потому что я знаю, что это очень простая проблема.

Любая помощь очень ценится.


Update:

Конечно Heres мой код:

Отдел модели:

Class Department < ActiveRecord::Base 
    has_one :person 
end 

Person модель:

Class Person < ActiveRecord::BAse 
    belongs_to :department 
end 

Показать Person Вид:

<% @people.each do |p| %> 
<p>Name: <%= "#{p.name}" %> </p> 
<p>Start Date: <%= "#{p.start_date}" %> </p> 
<p>Current Department: <%= "#{p.department_id}" %> <- displays relevant id 
<% end %> 

person_department_id возвращается как 2, который будет относиться к «счета» в таблице отделов, так то отлично.

При изменении в ваших отношениях, и о внесении изменений в вид на: <% = p.department.name%> Я все еще получаю

undefined method `department' for #<Person:0x47f9040> 

ответ

0

У вас есть отношения (hasone-belongsto) противоположным образом. Предполагается, что иностранный ключ находится на стороне «принадлежности», отдел в вашем случае.

Итак, вам необходимо либо обновить схему базы данных, либо переключить has_one и belongs_to в свои модели.

Вы можете узнать больше о теме here.

PS Также стоит отметить, что это очень странная организация, в которой каждый отдел состоит из одного человека.

редактировать О новых данных
Вы непоследовательны в своем коде. Вы использовали p.department_id в оригинальном посте и p.person_department_id позже.
Примечание. Рельсы не могут читать имя внешнего ключа из вашего разума, поэтому modelname _id принимается по умолчанию. Если вы хотите что-то другое, specify value explicitly.

Кроме того, пожалуйста, добавьте обновленный код в свой вопрос, а не новый ответ. Кто-то может запутаться.

+0

Не имеет смысла вставлять person_id в таблицу отделов, у меня есть только 3 отдела, и просто используйте эту таблицу для их хранения. Я пытаюсь переключить отношения, но опять же, как я могу выдавить значение имени отдела в моем представлении ???? –

+0

@snomy_mcnoodle 'p.department.name' На самом деле, официальное руководство по направляющим не так уж трудно читать. –

+0

undefined method 'department 'for # ​​ –

Смежные вопросы