これは実用的な解決策を求める質問ではなく、ベスト プラクティスは何かという質問であることに注意してください。親切。
ビュー全体で、次のようなコードがたくさんあります (私は HAML を使用しています)。
= t("some.key")
%b= t("other.key.#{string}")
%i= string
さまざまな場所で使用されるとすぐに、ヘルパーに抽出することにしました。しかし、私はそれを行うための最もクリーンな方法が何であるかを理解していないことに気付きました.
+
文字列の連結 ( )、文字列の書式設定 ( "%s %s %s" % [...]
)、または配列の結合 ( )を使用することを考えることができますが[...].join("\n")
、これらの方法はすべて、他のオブジェクト (文字列、配列) を構築したり、区切り記号 (" "
または"\n"
)html_safe
3つの文字列を宣言するだけでなく、面倒です。
私はそれ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 配列の結合しか選択肢がないのでしょうか?