これは実用的な解決策を求める質問ではなく、ベスト プラクティスは何かという質問であることに注意してください。親切。
ビュー全体で、次のようなコードがたくさんあります (私は HAML を使用しています)。
= t("some.key")
%b= t("other.key.#{string}")
%i= string
さまざまな場所で使用されるとすぐに、ヘルパーに抽出することにしました。しかし、私はそれを行うための最もクリーンな方法が何であるかを理解していないことに気付きました.
+文字列の連結 ( )、文字列の書式設定 ( "%s %s %s" % [...])、または配列の結合 ( )を使用することを考えることができますが[...].join("\n")、これらの方法はすべて、他のオブジェクト (文字列、配列) を構築したり、区切り記号 (" "または"\n")html_safe3つの文字列を宣言するだけでなく、面倒です。
私はそれconcatがこのように機能するはずだと思った
def long_string(string)
concat t("some.key")
concat content_tag(:b, t("other.key.#{string}"))
concat content_tag(:i, t(string)
end
...そしてそれは機能しますが、ヘルパーを評価する代わりに実行することを強制します。これは慣用的ではありません。使用することを意味します
%p- long_string(string)
それ以外の
%p= long_string(string)
もちろん部分的に抽出することもできますが、3 行のコードでは多すぎるようです。
そうは言っても、HTML で強化された 3 つの行をヘルパーで連結するためのクリーンでエレガントな方法が欠けているのでしょうか、それともconcat/partial/dirty 配列の結合しか選択肢がないのでしょうか?