1

このようなページがありselect_tag、エンジンを選択するために使用するnilhaml、選択nilした場合は body_preview 値を使用し$('#mail_body').val()て、html コードを直接表示します。選択された 'haml' が mail_body に hamlコードを記述し、body_preview 値が$(#mail_body.val())html に変換される場合、haml コードを変換するのは static メソッドのみを使用し、ruby 動的値は使用しません。

<%= select_tag "engine", "<option></option><option>haml</option>",
                   :onchange => "$('#body_preview').trigger('load');"%>

<%= text_area_tag 'mail_body', nil,
                   :onchange => "$('#body_preview').trigger('load');" %>

<iframe id="body_preview"  
      onload="$('#engine').val() == 'haml' ? "???????" : $('#mail_body').val()">
</iframe>

エンジンがゼロのとき

メール本文

#content
  .left.column
    %h2 Welcome to our site!
    %p 2

body_preview

#content .left.column %h2 Welcome to our site! %p 2

エンジンがhamlの場合 mail_body

#content
  .left.column
    %h2 Welcome to our site!
    %p 2

body_preview が

<div id="content">
  <div class="left column">
    <h2>Welcome to our site!</h2>
    <p>2</p>
  </div>
</div>
4

1 に答える 1

0

haml エンジンを使用して、 hamlを処理できます。

template = File.read('templates/really_cool_template.haml')
haml_engine = Haml::Engine.new(template)
output = haml_engine.render
puts output
于 2012-07-17T09:08:51.220 に答える