Mustacheテンプレートを使用しており、RoR Webアプリケーションで、テンプレートとデータベースに保存したデータを組み合わせたプレビュービューを作成したいのですが、インターネットで検索した後( SO!)、アクティブなモデルを含む例は見つかりませんでした。
ActiveModelレコードをMustacheにパイプして、テンプレートとマージするにはどうすればよいですか?
セットアップ:
スキーマ
create_table "templates", :force => true do |t|
t.string "kind"
t.text "data"
t.integer "data_count"
end
create_table "bars", :force => true do |t|
t.string "guid"
t.string "name"
t.string "summary"
end
モデルについて特別なことは何もありません。どちらもActiveRecord::Baseからサブクラス化されています
class Bars < ActiveRecord::Base
end
class Templates < ActiveRecord::Base
end
コントローラー
class TemplateController < ApplicationController
def preview
@result = Mustache.render( template.data, :bars => Bar.limit(template.data_count ) ).html_safe
end
end
景色
<%= @result %>
ルート
get 'templates/:id/preview' => 'templates#preview', :as => 'templates_preview'
データ
y Bar.all
---
- !ruby/object:Bar
attributes:
guid: "1"
name: "test1"
- !ruby/object:Bar
attributes:
guid: "2"
name: "test2"
テンプレート(例としてhtmlを簡略化しました)
<html>
<head>
</head>
<body>
{{#bars}}
<a href="{{guid}}">{{name}}</a>
{{/bars}}
</body>
</html>
結果
<html>
<head>
</head>
<body>
<a href=""></a>
</body>
</html>
期待
<html>
<head>
</head>
<body>
<a href="1">test1</a><a href="2">test2</a>
</body>
</html>
私はこれに対する簡単な答えがあることを望んでいます、そして私はそれをただ逃しています。ありがとう。