有条件的变量

时间:2018-12-17 21:41:23

标签: ruby-on-rails ruby-on-rails-5

我有一个条件语句,该语句确定高图表行的颜色。我想在多个图表中重复此条件。目前,我发现我不得不在每个图表中重复执行代码,因为我似乎无法对存储的条件进行变量处理。这与任何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

1 个答案:

答案 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)