4

我正在研究 Rails 中的本地化概念,需要在 HTML 页面中获取一些本地化值。所以我在控制器中生成了如下格式的数组。,

#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'] %>

所以,它会显示值为' Wake Up ',

但它不起作用..任何人都可以请...

4

4 回答 4

4

为此使用散列(http://api.rubyonrails.org/classes/Hash.html)更容易,它就像一个带有命名索引(或键)的数组。

所以这样做:

@alert_messages = {
   wake_up: "Wake Up",
   token_expired: "Token Expired",
   .
   .
   .
}

你也可以通过这种方式扩展你的哈希:

@alertMessages[:loadMore] = "Load More"

使用以下方式访问它:

@alert_messages[:loadMore]

你也应该检查 i18n 来做国际化,这是一种更健壮和灵活的方式: http: //guides.rubyonrails.org/i18n.html

于 2013-04-25T09:38:11.633 回答
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',

并尝试使用 always 符号,因为查找会很快

于 2013-04-25T09:43:29.283 回答
1

数组在这里似乎不太合适,但如果您仍想使用它,请按以下方式进行:

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

你应该抽象这个。

于 2013-04-25T09:36:20.123 回答
0

尝试这个:

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

谢谢。

于 2013-04-25T09:40:59.100 回答