HAMLがrender
メソッドをRailsでどのように処理するかが不一致に見えてしまいました。 HAML例1HAMLがRailsテンプレートのブロックをレンダリングする方法の微妙な違い
# template.html.erb
This is the index template.
<%= render :layout => 'form4', :partial => 'stuff2' %>
# _layout.html.erb
<%= form_tag do %>
<div class="something">
<%= yield %>
</div>
<% end %>
# _partial.html.erb
<b>meh</b>
<%= text_field_tag 'name' %>
で:
例1 ERB で
# template.html.haml
This is the index template.
=render :layout => 'form2', :partial => 'stuff1'
# _layout.html.haml
=form_tag do
.something
=yield
# _partial.html.haml
%b meh
=text_field_tag 'name'
予想されるように、同じレンダリングの両方の結果(以下略します):
今
私は以下のようにブロックの構文を使用するrender
文を調整すると、ここではすごみがでキックです:。ERBで
:
# template.html.erb
This is the index template.
<%= render :layout => 'form3' do %>
<b>meh</b>
<%= text_field_tag 'name' %>
<% end %>
# _layout.html.erb
<%= form_tag do %>
<div class="something">
<%= yield %>
</div>
<% end %>
HAML:
# template.html.haml
This is the index template.
=render :layout => 'form1' do
%b meh
=text_field_tag 'name'
# _layout.html.haml
=form_tag do
.something
=yield
私はERBのバージョンでレンダリング上記と同じを得るが、HAMLコード出力:
This is the index template.
<b>meh</b>
<input id="name" name="name" type="text" />
<form>
<div class='something'></div>
</form>
HAMLは何とかに渡されたブロックを尊重していないかのようにそれはありますそれ。 HAMLの文書によると、インデントに基づいてオートクローズするブロックをサポートしているので、それは問題ではないと思われます。また、彼らの文書では、自分自身のrender
メソッドの定義を見ました。それはレールの(erbの?)render
メソッドと同じインターフェイスに同行するために適切に実装されていない可能性がありますか?
これは本当にメソッドインタフェースの矛盾である場合、HAMLで問題を開くことを正当化するかどうか?
はちょうどそれはまた、私は3.1.2に3.0.9とHAMLに私のレールのアプリをアップグレードしたときに、私はこの変更に気づいていることは注目に値しますhttps://github.com/iamvery/haml-weirdness
で挙動を示す例アプリを追加しました。 hamlを3.0.24にしておけば、はレール3.0.9 ...
私は同じ問題があります。 – Lichtamberg
これはHAML 3.1.3で修正されているようです! – Iamvery