rails 覚えたての頃に書いた以下のようなコード
def items(array)
array.map{ |i| Item.find(i) }
end
を、以下のように書き換えてハマる。
def items(array)
Item.find(array)
end
タイトルに答えを書いちゃったけど、find(array) は array の順序を保存しない。
array が sort されてれば大丈夫かと思ったが、 mysql では OK だが postgresql ではダメだった。
幸い僕のケースでは array が sort 済みのものだったので、 find(array, :order=>:id) で丸く収まったが、array が sort されてない場合には厄介そうだ。
Archive for February, 2011
Model.find(array) で順序が狂う
08
Feb
list_tag で Array をリストに展開
01
Feb
あったらいいのに、ということで作った。ApplicationHelper とかに入れればOK.
array がnilや空のときには ul そのものが出ないのがポイント。
1 2 3 4 5 6 7 8 9 10 11 |
# ex: # < %= list_tag(:ul, ["menu1", "menu2"], :class=>"menu") %> # => <ul class="menu"><li>menu1</li><li>menu2</li></ul> def list_tag(wrapper, array, *opt) return if array.to_a == [] content_tag(wrapper, *opt) do array.inject(""){|s,i| s < < content_tag(:li, i) }.html_safe end end |