4

以下の読みやすさとバランスに注意してください。

<li class='aclass anotherclass <%= maybeaconditionalclass %>'>
   <a href="<%= some stuff %>">
     <%= some other stuff %>
   </a>
</li>

残念ながら、リンク内に末尾の空白が生成され、その結果、末尾に醜い下線が表示されます。今では読みにくくなっていますが、私はこれで生きることができます:

<li class='apossibleclass anotherclass <%= maybeaconditionalclass %>'>
   <a href="<%= some stuff %>"><%= some other stuff %></a>
</li>

それでも、私が今この種のことを考えた場合、同じ問題が残ります:

li.apossibleclass:after {
    content: "/";
}

終了AとLIの間の空白が、リストアイテムの最後に貼り付けられるべきものの邪魔になるためです。私は回避策としてその醜い混乱を生み出すことしかできませんでした:

<li class='apossibleclass anotherclass <%= maybeaconditionalclass %>'>
   <a href="<%= some stuff %>"><%= some other stuff %></a></li>

Djangoは素晴らしい解決策を思いつきました:{% spaceless%}なので、Rails erbテンプレートで{%spaceless%}タグに相当するものを探しています。

4

1 に答える 1

7

はい、それは便利な機能です。私が知る限り、Railsにはこれほど優れた機能はありません。だから私はそれをコーディングしました。

# Strip all whitespace between the HTML tags in the passed block, and
# on its start and end.
def spaceless(&block)
  contents = capture(&block)

  # Note that string returned by +capture+ is implicitly HTML-safe,
  # and this mangling does not introduce unsafe changes, so I'm just
  # resetting the flag.
  contents.strip.gsub(/>\s+</, '><').html_safe
end

application_helper.rbこれは、に配置して次のように使用できるヘルパーです。

<%= spaceless do %>
  <p>
      <a href="foo/"> Foo </a>
  </p>
<% end %>

...これは次のような出力文字列になります

<p><a href="foo/"> Foo </a></p>

残念ながら、これはRails3でのみ機能します。このような機能のRails2サポートには、ERbへのダーティハックが必要になります。

于 2011-08-03T11:07:16.477 に答える