伙计,您的意思是,将该操作移至控制器,不要在视图中执行。我完全同意这一点,我非常感谢你的回答。
我将把它移到控制器并创建@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)