2013-03-01 60 views
1

我有一個模型醫院:導軌的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 

的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 2013-03-01 13:53:27

+0

@米蘭Vladimirovic:非常感謝,它也適用於我。 – inquisitive 2014-11-26 08:52:52

相關問題