dan*_*mcc 2 model group-by ruby-on-rails-3
我在Rails 3应用程序中有一个文章模型.文章模型有一个名为categories的列,它使用新表单视图中的选择框进行设置.(这是一个选择框,因为选项永远不会改变,只有四个选项).
我的索引视图代码如下:
<% @articles.category.each do |article| %>
<%= article.category %>
<% @articles.each do |article| %>
<tr>
<td><%= article.title %></td>
<td><%= article.author %></td>
<td><%= article.category %></td>
<td><%= link_to 'Show', article %></td>
<td><%= link_to 'Destroy', article, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我在控制器中按类别分组:
@articles = Article.group(:category).order('title ASC')
Run Code Online (Sandbox Code Playgroud)
但是,这会导致异常,指向以下行<% @articles.category.each do |article| %>.
实现以下内容的最简洁(从我的视图代码中)是什么方式:
所以每篇文章都列在它的类别下面.
我建议你使用group_by方法(文档):
# in your controller
articles = Article.order('title ASC')
@grouped_articles = articles.group_by &:category
# in your view
<% @grouped_articles.each do |category, articles| %>
<%= category %>
<% articles.each do |a| %>
<tr>
<td><%= a.title %></td>
<td><%= a.author %></td>
<td><%= link_to 'Show', a %></td>
<td><%= link_to 'Destroy', a, confirm: 'Are you sure?', method: :delete %> </td>
</tr>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |