私は Backbone.js でしばらく作業してきましたが、最近遭遇したことの 1 つは次のとおりです。.eco.jst テンプレートにサーバー側のロジックを含める必要がある場合があります
例えば
- i18n 翻訳 (現在、これについては i18n.js gem を参照してください)
- ハードコーディングされていないパス (somemodel_path(somemodel))
- 承認 (たとえば、ユーザーがこのモデルを破棄できる場合は削除ボタンを表示します)。Atm 入力されるjsonにいくつかの権利オブジェクトを渡すことでこれを解決します。
- simple_form や S3_file_uploader などの html ヘルパーをレンダリングします (サーバー側でレンダリングすることでこれを解決し、ディスプレイを何も表示しません)
ご存じのとおり、.eco は node.js によって解析されるため、eco ファイルで ruby を呼び出すことはできません。これらの問題のほとんどは、基本的に head 内に「データ」オブジェクトを作成することで解決します。これに似ています:
window.data = {
some_translation = "<%= t('cool') %>",
<%= "can_destoy_model = true," if can?('destroy', Model) %>
post_edit_link = "<%= post_path(@post) %>
}
これがかさばることに加えて (これは単なる例です。通常、これはより整理されるか、いくつかの dom 要素に html5 データ属性を追加します)、時間がかかります。場合によっては、そうでなければ Rails のワンライナーになる完全なビジネス ロジックを再作成する必要があります。 (たとえば、エンコードされた Amazon ポリシーファイルとトークンを必要とする S3_file_uploader を取り上げます)
これについてどう思いますか。おそらく.ecoを使用しないでください(ただし、ビューを汚染するのではなく、別のファイルのテンプレートが好きです)。たとえば、口ひげやハンドルバーを使用した場合、サーバー側のロジックを使用できますか?また、そうであればどの宝石をお勧めしますか?