2013-04-25 53 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