Ich verwende Ruby on Rails v3.2.2 und globe3 v0.2.0 ruby-Edelsteine. Da mag ich Übersetzungsdaten für ein Objekt aktualisieren (so richtige Daten zu speichern, indem Sie globalize3) ich den folgenden Code verwenden in meiner Controller-Datei:Wie kann man Einstellungen verbessern und temporäre Variablen um einen Codeblock herum bekommen?
# 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
Der obige Code funktioniert wie erwartet (das heißt, es aktualisiert übersetzte Daten in der Datenbank für die italienische Sprache), aber ich denke, dass die Art und Weise, wie ich lokale Variablen setze, falsch oder zumindest nicht richtig oder vielleicht nicht haltbar/lesbar ist. Es gibt eine Möglichkeit, das zu verbessern? Oder, im Allgemeinen, gibt es eine Möglichkeit, die Einstellung zu verbessern und temporäre Variablen um einen Codeblock herum zu bekommen? Was raten Sie zu?
Sie könnten einen 'around_filter' verwenden, ist aber viel des Guten für eine kleine Nutzung. – Zabba