我正在尝试对从数据库中收到的一些项目进行排序。目前,我有一系列从我的Tool
模型返回的对象。现在,我正在使用以下代码(在我的toolkit_controller中)从我的数据库中检索一些工具:
def index
@tools = Tool.order('name ASC').all
end
这似乎工作正常且符合预期。当我这样做时,我得到以下结果集(为了清楚起见,省略了一些额外的结果)。
[#<Tool id: 1, name: "Hammer", description: "A basic hammer",
created_at: "2013-07-07 16:46:13",
updated_at: "2013-07-07 16:46:15">,
#<Tool id: 2, name: "Mallet", description: "A fancy
mallet", created_at: "2013-07-07 16:46:13", updated_at: "2013-07-07 16:46:15">,
#<Tool id: 3, name: "Screwdriver", description: "A screwdriver",
created_at: "2013-07-07 16:46:13", updated_at:
"2013-07-07 16:46:15">,
#<Tool id: 4, name: "Torch", description: "A cheap torch", created_at:
"2013-07-07 16:46:13", updated_at: "2013-07-07 16:46:15">, ....]
我现在苦苦挣扎的是如何在我的erb页面上以垂直方式(而不是水平)显示我的工具。为了帮助清楚地了解我想要的排序顺序,请查看这篇文章:Ruby on Rails 更改数组显示顺序。
我的显示代码如下:
<%= @count = 0 %>
<div>
<% @tools.each do |t| %>
<% @count = @count+1 %>
<div class="individualTool">
<%= t.name %> <%= @count %>
</div>
<% if @count == 4 %>
<% @count = 0 %>
</div>
<div class="row-fluid">
<% end %>
<% end %>
如您所见,上面的代码可以很好地按名称从左到右显示工具(例如 Hammer、Mallet、Screwdriver、Torch),但我的目标是从上到下显示它们如下所示的顺序:Ruby on Rails 更改数组显示顺序。
在我链接的帖子中,有人建议使用.each_slice(3).to_a.transpose.flatten
(尝试更正排序顺序),但是当我尝试在@tools
返回的那个上时,我收到一条错误消息,指出element size differs
.
关于如何实现这一点的任何想法都会很棒!
提前致谢。