2013-04-25 54 views
4

我正在研究Rails中的本地化概念,並需要獲取HTML頁面中的一些本地化值。所以,我產生在控制器陣列如下面格式。,如何在Ruby On Rails中獲取數組值

#array use to store all localization values 
@alertMessages = [] 

#array values... 
{:index=>"wakeUp", :value=>"Wake Up"} 
{:index=>"tokenExpired", :value=>"Token Expired"} 
{:index=>"timeZone", :value=>"Time Zone"} 
{:index=>"updating", :value=>"Updating"} 
{:index=>"loadMore", :value=>"Load More"} 
#....more 

HTML頁面我想獲得像下面或一些其它類型的定位值,

<%= @alertMessages['wakeUp'] %> 

所以,它將顯示值是'喚醒',

但其沒有工作.. 任何一個可以請...

回答

4

對於這個(http://api.rubyonrails.org/classes/Hash.html),它更容易使用散列,就像具有命名索引(或鍵)的數組一樣。

所以這樣做:

@alertMessages = { 
    :wakeUp => "Wake Up", 
    :tokenExpired => "Token Expired", 
    . 
    . 
    . 
} 

還可以擴展你的散列是這樣的:

@alertMessages[:loadMore] = "Load More" 

訪問它使用:

@alertMessages[:loadMore] 

您也應該檢查國際化辦國際化,這是一個更強大和靈活的方式:http://guides.rubyonrails.org/i18n.html

+0

酷答案.... – 2013-04-25 09:57:13

+0

能夠通過使用@alertMessages訪問[「loadMore」] ...,沒有指定引號無法訪問價值 – 2013-04-25 10:28:14

+0

哦感謝您指出錯誤,我認爲您可以使用「字符串」或:符號。 – 2013-04-25 11:09:20

1

數組似乎並沒有真正適合這裏,但如果你仍然想使用它,請繼續部份方式:

array.find{|el| el[:index] == "wakeUp"}[:value] 

你應該抽象這雖然。

0

試試這個:

<% 
    @alertMessages.each_with_index do |alertMessage, index| 
    alertMessage[:value] if index == "wakeUp" 
    end 
%> 

感謝。

+0

爲什麼我們需要運行陣列的全長...? – 2013-04-25 09:43:02

+0

是的,你是對的。那麼@ apneadiving的答案是最好的答案:'array.find {| el | el [:index] ==「wakeUp」} [:value]' – rony36 2013-04-25 09:45:43

2
# Hash to store values 
@alertMessages = {} 

#hashvalues... 
alertMessages[:wakeUp] = "Wake Up" 
alertMessages[:tokenExpired] = "Token Expired" 
alertMessages[:timeZone] = "Time Zone" 
alertMessages[:updating] = "Updating" 
alertMessages[:loadMore] = "Load More" 

#....more 
In HTML pages i want to get localization values like below or some other type, 

<%= @alertMessages[:wakeUp] %> 
so, it will display value is 'Wake Up', 

,並嘗試使用總是符號,因爲lookup will be fast

+0

您可以使用to_s 將符號轉換爲字符串,反之則使用to_symbol。 – Trompa 2013-04-25 09:45:42

+0

而嘗試你的方法我得到這個錯誤** NoMethodError(未定義的方法'<<'爲{}:哈希):** – 2013-04-25 09:48:02

+0

在哪裏?導致它在我的電腦中工作...也許它在你的代碼的其他部分,仍然使用alertMessages作爲數組? – Trompa 2013-04-25 09:53:57