I have the a model hospitals :
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 is a view as follows
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 | |
+--------------------+---------------+------+-----+---------+-------+
The vw_sanctioned_working_by_hospital model is as follows :
class VwSanctionedWorkingByHospital < ActiveRecord::Base
self.table_name = 'vw_sanctioned_working_by_hospital'
belongs_to:hospital
end
But im gettting the following error :
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>
Where am I going wrong ? I have read that a db view can be interpreted just like a read only table,then what is the problem ?
My associations are correct and everything seems fine but I'm still not able to render the class_1_sanctioned
column.
You have a has_many relation:
has_many :vw_sanctioned_working_by_hospitals
This actually returns a relation and not a single object. You would need to either specify which object you want eg
@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
Or (much more likely this is what you want) you need to iterate over the relation:
<% @hospital.vw_sanctioned_working_by_hospitals.each do |vw_sanctioned| %>
<%= vw_sanctioned.class_1_sanctioned %>
<% end %>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.