我有一个名为select
distinct count(distinct provisionl0_.pl_id) as col_0_0_
from
sample_table provisionl0_
where
provisionl0_.pl_type=?
and (
provisionl0_.pl_date between ? and ?
)
的模型,只有两列:语言和链接,并且希望能够遍历每种语言的每个链接并显示在视图中。即(显然,这不是代码,只是为了说明所需的模式)
Language
提取这些数据然后在视图中呈现的“轨道方式”是什么? (注意:如果数据在两个不同的模型中,但不是这样,我会很容易做到这一点)
答案 0 :(得分:3)
因此,一种Railsy的方式是在您的控制器中使用以下内容:
@languages = Language.all.group_by(&:language)
这将为您提供按(erm ...)语言语言分组的语言哈希(<-也许将列重命名为name
以避免这种歧义?)
# { 'English' => [language_1, language_2, etc...],
# 'French' => [language_3, language_4],
# etc... }
然后在您看来:
<% @languages.each do |language_name, languages| %>
<h1>
<%= language_name %>
</h1>
<% languages.each do |language| %>
<p>
<%= language.link %>
</p>
<% end %>
<% end %>
很明显,HTML标记可以是您想要的任何内容,尽管我希望可以提供一个有用的示例。
但是,这里有一个警告-随着数据库的增长,这可能不是一种有效的工作方式。您最好为链接建立一个单独的模型,在语言和链接之间建立一对多的关系。
例如:
# langage.rb
has_many :links
# link.rb
belongs_to :language
# your controller
@languages = Language.includes(:links)
然后在视图中显示以下内容:
<% @languages.each do |language| %>
<h1>
<%= language.language %>
</h1>
<% language.links.each do |link| %>
<p>
<%= link.url %>
</p>
<% end %>
<% end %>