我希望能够在我的rails应用程序中使用全局可访问的符号,以便打印或返回一组易于维护的字符串/句子。我之前听说过使用YAML的一种方法,但是我记不起它的实现细节或它的名称。
我理想地想象它会起作用的一个例子:
def foo
if token.expired?
render json: { message: :token_expiry_message }
end
end
def bar
if !user.authenticate
flash[:notice] = :token_expiry_message
end
end
token_expiry_message: "The user token is expired, please re-authenticate"
这样我可以通过从YAML文件中引用它来干掉我的控制器代码并在我的应用程序中使用标准语言集。
答案 0 :(得分:3)
您可以使用内置的国际化内容轻松完成此操作
http://guides.rubyonrails.org/i18n.html
在config/locals/locale.yml
中(其中locale是您当前的本地,例如en)..
en:
token_expiry_message: "Your token has expired, please get another"
然后你可以只使用t()
助手。
def foo
if token.expired?
render json: { message: t(:token_expiry_message) }
end
end
def bar
if !user.authenticate
flash[:notice] = "Error: " + t(:token_expiry_message)
end
end
具有能够提供错误消息的本地化版本的额外好处。
答案 1 :(得分:0)
是的,您可以使用Settings.yml文件。如果您需要支持多种语言,您还可以深入了解它并使用本地化文件。
在您的Settings.yml中:
token_expiry_message: 'The user token is expired, please re-authenticate'
然后可以通过以下方式将其加载到您的代码中:
def foo
if token.expired?
render json: { message: Settings.token_expiry_message }
end
end
def bar
if !user.authenticate
flash[:notice] = "Error: #{Settings.token_expiry_message}"
end
end