2013-03-01 33 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

相关问题