簡體   English   中英

Rails ActiveRecord :: Relation未定義方法

[英]Rails ActiveRecord::Relation undefined method

我有示范醫院:

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列。

您具有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 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM