Ich möchte meinen Code in Ruby auf Schienen umgestalten.Wie umgestalten Sie diesen Code, um ihn sauberer zu machen (Ruby on Rails)?
In Order.rb ich habe:
def self.filter_price range
case range.to_sym
when :highest
self.where("price > 10000")
when :higher
self.where(price: 5001..10000)
when :high
self.where(price: 1001..5000)
when :low
self.where(price: 501..1000)
when :lower
self.where(price: 1..500)
when :lowest
self.where(price: [0,nil])
else
self
end
end
In Ansichten, ich habe diese schlanke html:
- price_range = [ [0,nil,"lowest"], [1,500,"lower"], [501,1000,"low"], [1001,5000,"high"], [5001,10000,"higher"], [10000,">","highest"] ]
- (0..5).each do |i|
tr
- if i == 0
th= "#{i}"
- else
th= "#{price_range[i][0]} - #{price_range[i][1]}"
td.text-right= Order.filter_price(price_range[i][2]).count
span.divider
= with_unit (Order.filter_price(price_range[i][2]).count.to_f/Order.count.to_f * 100.0).to_i, "%"
td.text-right
= Order.filter_price(price_range[i][2]).select{|o| o.replied?}.count
span.divider
= with_unit (Order.filter_price(price_range[i][2]).select{|o| o.replied?}.count.to_f/Order.all.select{|o| o.replied?}.count.to_f * 100.0).to_i, "%"
span.divider
= with_unit (Order.filter_price(price_range[i][2]).select{|o| o.replied?}.count.to_f/Order.filter_price(price_range[i][2]).count.to_f * 100.0).to_i, "%"
td.text-right
= Order.paid.filter_price(price_range[i][2]).count
span.divider
= with_unit (Order.paid.filter_price(price_range[i][2]).count.to_f/Order.paid.count.to_f * 100.0).to_i, "%"
span.margin
Wie kann ich price_range Array entfernen Sie den Code sauberer zu machen und immer noch die gleiche Ausgabeergebnis?
Kann mir jemand helfen, danke im Voraus.
Hier ist, was in den Ansichten sehen:
| Price | request | reply | Paid |
----------------------------------------------
| 0 | 68 | 19/15%/27% | 5/6% |
---------------------------------------------
|1 - 500 | 19 | .... | .... |
----------------------------------------------
|.... | .... | .... | .... |
Der HTML-Code, oben ist durch jede Zeile für Looping.
Was wird schließlich in der Ansicht gerendert? Können Sie ein Beispiel geben? – tekina