0

Ruby onRailsv3.2.2とglobalize3v0.2.0ruby-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

上記のコードは期待どおりに機能します(つまり、データベース内の翻訳されたデータをイタリア語に更新します)が、ローカル変数の設定方法が間違っているか、少なくともまったく正しくないか、おそらく保守できないと思います/読み取り可能。それを改善する方法はありますか?または、一般的に言って、コードのブロックの周りの一時変数の設定と取得を改善する方法はありますか?何についてアドバイスしますか?

4

1 に答える 1

1

i18nのコードを調べたところ、次のことがわかりました。

I18n.with_locale('it') do
  # Italian stuff
end

入力を検証し、黒がエラーを発生させた場合に回復するためにensure句を使用します。

ドキュメントは次のとおりです:http://rubydoc.info/docs/rails/2.3.8/I18n.with_locale

于 2012-04-14T01:49:33.163 に答える