我有一个条件语句,该语句确定高图表行的颜色。我想在多个图表中重复此条件。目前,我发现我不得不在每个图表中重复执行代码,因为我似乎无法对存储的条件进行变量处理。这与任何DRY方法背道而驰,将来可能会带来麻烦。
我的图表(使用惰性highcharts宝石)
@chart_1 = LazyHighCharts::HighChart.new('graph') do |f|
@sales.sale_selections.flat_map { |ss|
f.series(animation: false, type: 'spline', name: ss.sale_type.name,
data: ts.sale_methods.map { |sm| { y: sm.sales_total.to_f, x: sm.days }}, color:
if ss.sale_type.name.include? 'soda'
'red'
elsif ss.sale_type.name.include? 'chips'
'blue'
else
'black'
end
)}
end
是否有可能将条件作为变量在需要时在其中调用。例如(不起作用,但仅作为示例):
@colours = if ss.sale_type.name.include? 'soda'
'red'
elsif ss.sale_type.name.include? 'chips'
'blue'
else
'black'
end
答案 0 :(得分:1)
是的。编写一个函数以返回所需的颜色。
def row_color(sale_type_name)
if sale_type_name.include? 'soda'
'red'
elsif sale_type_name.include? 'chips'
'blue'
else
'black'
end
end
然后调用该函数以获取颜色
@colour = row_color(ss.sale_type.name)