hi,
i m new to ruby on rails, this question might sound stupid, but i m
really confused by the relationship between attributes of the model
and the column in that model table.
i have two tables ''institutions'' and
''alerts'' as below:
Institutions:
id site created_at updated_at
1 default null null
alerts
id institution_id name value
1 1 testname testvalue
the corresponding models are:
===============================================alert.rb
class Alert < ActiveRecord::Base
belongs_to :institution
attr_accessor :name, :value
def self.find_all(institution_id)
find(:all, :conditions => "institution_id =
''#{institution_id}''")
end
end
================================================institution.rb
class Institution < ActiveRecord::Base
has_one :alerts
def find_alerts(institution_id)
Alert.find_all(institution_id)
end
end
===================================================in app/views/institutions/ i
have edit.html.erb
<h1>Editing institution</h1>
<% form_for(@institution) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :site %><br />
<%= f.text_field :site %>
</p>
<p>
<%= f.label :id %><br />
<%= f.text_field :id %>
</p>
<% for alert in @institution.find_alerts(@institution.id) %>
<p>
<%=h alert.name %>
</p>
<% end %>
<p>
<%= f.submit ''Update'' %>
</p>
<% end %>
<%= link_to ''Show'', @institution %> |
<%= link_to ''Back'', institutions_path %>
however it can only show the institution''s info but not
alert''s info.
from irb i tried:
a = Alert.find_all(1)
it showed me the correct record
but if i tried: a.name
it complained: NoMethodError: undefined method ''name'', but i
already
defined attr_accessor :name, :value in alert.rb, how come it still
complained?
Thanks!