データベースから受け取ったアイテムを並べ替えようとしています。現在、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 change array display order。
私の表示コードは次のとおりです。
<%= @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 %>
ご覧のとおり、上記のコードはツールを左から右に名前 (例: ハンマー、マレット、スクリュードライバー、トーチ) で表示するのに問題なく機能しますが、ここでの私の目標はツールを上から下に表示することです。ここに表示される順序: Ruby on Rails は配列の表示順序を変更します。
リンクした投稿で、誰かが.each_slice(3).to_a.transpose.flatten
(並べ替え順序を試して修正するために) を使用することを提案しまし@tools
たが、返された でそれを試したところ、element size differs
.
これをどのように達成できるかについてのアイデアは素晴らしいでしょう!
前もって感謝します。