【发布时间】:2011-10-19 15:35:24
【问题描述】:
我有一个 Rails 3 ActiveRecord,它属于两个不同的 ActiveRecord。示例
class Animal < ActiveRecord::Base
belongs_to: species
belongs_to: zoo
...
end
其中动物表包含一个species_id、zoo_id、name 和description,表species 有一个scientific_name 和zoo 有地址。
在控制器中,我有一个查询
@animals = Animal.includes(:species, :zoo).order(:name)
以及我想在视图中显示的列列表,
@columns = ["name", "description", "species.scientific_name", "zoo.address"]
在视图中,我希望创建一个由列名列表驱动的 HTML 表,例如
<table>
<tbody>
<tr>
<% @animals.each do |animal| %>
<% %columns.each do |col| } %>
<td><%= animal[</td>
<% end %>
<% end %>
</tr>
</tbody>
</table>
这适用于动物的名称和描述,但不适用于species.scientific_name 和zoo.address。
我知道我可以对循环进行特殊处理并直接访问包含的类,如 animal.species['scientific_name'],但我希望有一种方法可以按名称访问包含的类。类似动物['species']['scientific_name']
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord