2010-04-20 34 views
1

值更改为名称我创建了一个选择按钮,用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

这将是一个哈希容易等

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 
+0

此选项的工作完全因为我需要,谢谢你这么多。 – ZeroSoul13 2010-04-20 15:55:28

+0

没有问题=)很高兴它帮助 – Staelen 2010-04-21 02:53:45

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 
相关问题