2

私は文字列を持っています:

str="Myname"

文字列の後に4つの空白を追加したいと思います。私がしたことは:

str=str+"    "+"somename"

strとして印刷すると<%= str %>、出力には空白が1つだけ表示されます。どうすればこれを機能させることができますか?私も試しました:

str=str+" "*4+"somename"  

これも、上記と同じ出力になります。これは印刷したくない。この文字列は、他の操作のRuby変数として使用されます。Rubyで作成できますが、RoRでは作成できません。

4

6 に答える 6

5

これは、HTML が空白を処理する方法に関係しています。あなたが使用したErbのような構文に基づいて使用していると思います。本当に空白を出力する必要がある場合は、&nbsp;.

ただし、これを CSS で修正することをお勧めします。

于 2013-02-28T11:14:11.580 に答える
2

同じ構造に従うと、次のようになります

str = raw(str + "&nbsp;&nbsp;&nbsp;&nbsp;" + "somename")

HTML では、空白の数に関係なく、1 つの空白のみがカウントされます。&nbsp;したがって、複数のスペースを表示するには、HTML エンティティ (Non Breaking Space を意味します) を使用する必要があります。

このraw部分が必要なのは、Rails がデフォルトで HTML エンティティまたは実際の HTML を文字列で出力することを許可しないためです。これは、悪意のあるユーザーがサイトやユーザーを攻撃するために使用できるためです。

したがって、使用する必要があり、Railsrawでも使用する必要があります。&nbsp;

于 2015-04-08T19:51:25.173 に答える
0

コンソールで次のコードを試してみると、問題が html にあることがわかります。

str="Myname"
str=str+"    "+"somename"

=> "Myname    somename"

次のようにしてみてください

<pre>
  <%= str %>
</pre>
于 2013-02-28T11:18:42.520 に答える
0

変数に 4 つのスペースが含まれている可能性がありますが、ブラウザーは 1 つのスペースの後に余分なスペースを切り捨てるため、表示されない場合があります。フォローしてみてください

<pre>
<%= str %>
</pre>

コードにスペースが追加されていることがわかります。あなたがやろうとしていることを達成するには、空白ではなく入れてください

于 2013-02-28T11:14:54.817 に答える
0

スペースを html エンコーディング文字列に置き換えてから、html_safe または raw でレンダリングできます。

<%= raw "Myname    somename".gsub(/\s/, "&nbsp;") %>
于 2013-02-28T11:59:28.947 に答える