2010-04-20 64 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 
相關問題