2013-03-01 3 views
1

У меня есть модель, больницы:Rails ActiveRecord :: Отношение неопределенного метод

class Hospital < ActiveRecord::Base 
    attr_accessible :beds, :fax_no, :hospital_name, :phone_no, :district_id, :institution_type_id, :location_id, :division_id, :block_id, :hospital_type_id, :IsAdministrativeLocation, :IsTribal, :latitude, :longitude 

    belongs_to:district 
    belongs_to:division 
    belongs_to:institution_type 
    belongs_to:hospital_type 
    belongs_to:block 

    has_many:hospital_reports 
    has_many:health_dept_locations 
    has_many:sanctioned_posts 
    has_many:postings 
    has_many:vw_sanctioned_working_by_hospitals 
end 

The vw_sanctioned_working_by_hospitals вид следующий

mysql> desc vw_sanctioned_working_by_hospital; 
+--------------------+---------------+------+-----+---------+-------+ 
| Field    | Type   | Null | Key | Default | Extra | 
+--------------------+---------------+------+-----+---------+-------+ 
| hospital_id  | int(11)  | NO |  | 0  |  | 
| hospital_name  | varchar(255) | YES |  | NULL |  | 
| class_1_sanctioned | decimal(32,0) | NO |  | 0  |  | 
| class_1_working | bigint(21) | NO |  | 0  |  | 
| class_1_vacant  | decimal(33,0) | NO |  | 0  |  | 
| class_2_sanctioned | decimal(32,0) | NO |  | 0  |  | 
| class_2_working | bigint(21) | NO |  | 0  |  | 
| class_2_vacant  | decimal(33,0) | NO |  | 0  |  | 
+--------------------+---------------+------+-----+---------+-------+ 

vw_sanctioned_working_by_hospital модель выглядит следующим образом:

class VwSanctionedWorkingByHospital < ActiveRecord::Base 
     self.table_name = 'vw_sanctioned_working_by_hospital' 
belongs_to:hospital 
end 

Но имейте следующую ошибку:

Showing /home/akash/hrmis/beauty4/app/views/hospitals/show.html.erb where line #11 raised: 

undefined method `class_1_sanctioned' for #<ActiveRecord::Relation:0xb1e5bd0> 
Extracted source (around line #11): 

8: <div class="span4"> 
9: <dl class="dl-horizontal"> 
10: <dt><strong>class_1_sanctioned:</strong></dt> 
11: <dd><%= @hospital.vw_sanctioned_working_by_hospitals.class_1_sanctioned %></dd> 
12: 
13: <dt><strong>Hospital Name:</strong></dt> 
14: <dd><%= @hospital.hospital_name %></dd> 

Куда я иду не так? Я прочитал, что представление db можно интерпретировать так же, как таблица только для чтения, тогда в чем проблема?

Мои ассоциации верны, и все кажется прекрасным, но я все еще не в состоянии отобразить столбец class_1_sanctioned.

ответ

6

У вас есть has_many отношение:

has_many :vw_sanctioned_working_by_hospitals 

Это фактически возвращает отношение и ни одного объекта. Вам нужно будет указать, какой объект вы хотите, например.

@hospital.vw_sanctioned_working_by_hospitals.first.class_1_sanctioned 
@hospital.vw_sanctioned_working_by_hospitals.last.class_1_sanctioned 
@hospital.vw_sanctioned_working_by_hospitals[123].class_1_sanctioned 

Или (гораздо более вероятно, это то, что вы хотите), вы должны пройти по соотношению:

<% @hospital.vw_sanctioned_working_by_hospitals.each do |vw_sanctioned| %> 
    <%= vw_sanctioned.class_1_sanctioned %> 
<% end %> 
+0

О большое спасибо большое спасибо большое спасибо: D .... итерация по отношению работал: D .... – SkyKOG

+0

@Milan Vladimirovic: Большое спасибо, это сработало и для меня. – inquisitive

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