如何根据大小写将值更改为名称

时间:2010-04-20 00:35:10

标签: ruby-on-rails

我创建了一个带有3个选项的选择按钮

<%= f.label :prioridad %><br/>
<%= f.select :prioridad, options_for_select([['Alta', 1], ['Medio', 2], ['Baja', 3]]) %>

该值将被插入到数据库中,但是当我显示它时,我会看到选择了该选项的数字(这是正确的)。

我想知道的是我如何更改索引,用户可以看到名称而不是值:

def convertidor
  case llamada.prioridad
    when prioridad == '1'
      puts "Alta"
    when prioridad == '2'
      puts "Media"
    else
     puts "Baja"
  end

这没效果。 Regars

2 个答案:

答案 0 :(得分:2)

覆盖模型中的prioridad方法,如下所示:

class Model
  PRIORITIES = [nil, "Alta", "Media", "Baja"]
  def prioridad
    PRIORITIES[attributes['prioridad']||0]
  end
end

现在,视图将显示prioridad的字符串值。

p.prioridad #nil
p.prioridad = 1
p.prioridad #Alta

p.prioridad = 5
p.prioridad #nil

p.prioridad = 3
p.prioridad #Baja

答案 1 :(得分:2)

使用哈希等会更容易

  class Model < ActiveRecord::Base
    ...

    # note that self[:prioridad] will return the value from the database
    # and self.prioridad will call this method that is overriding the original method

    def prioridad
      hash = {1 => "Alta", 2 => "Media"}

      return "Baja" if hash[self[:prioridad]].nil?
      hash[self[:prioridad]]
    end

    ...
  end