おい、あなたのポイントは、その操作をコントローラーに移動し、ビューでそれを行わないことです。私はそれに完全に同意します、そして私はあなたの答えにとても感謝しています。
それをコントローラーに移動し、@optionsを作成します。ありがとうございます。
さて、私が反対していることについて話しましょう。
言ってるの?
これ、
@options = Model.all.inject(Array.new) do |sel, model|
sel << [model.category_name, model.sub_category_id]
end
@options = [["All Categories", 0]] + @options
これより良いです、
Model.collect {|p| [p.category_name, p.sub_category_id] }.unshift(["All Categories", 0])
説明を期待できますか?
ruby-1.9.2-p290 :027 > timing = Benchmark.measure {@options = v.sub_categories.inject(Array.new) do |sel, model|
ruby-1.9.2-p290 :028 > sel << [model.category_name, model.sub_category_id]
ruby-1.9.2-p290 :029?> end
ruby-1.9.2-p290 :030?> @options = [["All Categories", 0]] + @options
ruby-1.9.2-p290 :031?> }
=> 0.000000 0.000000 0.000000 ( 0.000079)
ruby-1.9.2-p290 :023 > timing = Benchmark.measure { v.sub_categories.collect {|p| [p.category_name, p.sub_category_id] }.unshift(["All Categories", 0])}
=> 0.000000 0.000000 0.000000 ( 0.000086)