我创建了一个带有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
答案 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