我正在使用 Ruby on Rails v3.2.2 和 globalize3 v0.2.0 ruby-gems。由于我想更新对象的翻译数据(以便使用 globalize3 存储正确的数据),我在控制器文件中使用以下代码:
# Note how I set locale variables.
def update
temp_locale = I18n.locale
I18n.locale = 'it' # 'it' stands for italian
@article = Article.find(params[:id])
respond_to do |format|
if @article.update_attributes(params[:article])
format.html { redirect_to article_path(@article), notice: 'Article was successfully updated.' }
else
format.html { render action: "edit" }
end
end
I18n.locale = temp_locale
end
上面的代码按预期工作(即,它更新数据库中意大利语的翻译数据),但我认为我设置局部变量的方式是错误的,或者至少根本不正确,或者,也许,不可维护/可读。有办法改善吗?或者,一般来说,有一种方法可以改进围绕代码块设置和获取临时变量?你有什么建议?