我有一个字符串:
str="Myname"
我想在字符串后添加四个空格。我做的是:
str=str+" "+"somename"
当我将str
打印为<%= str %>
时,输出只显示一个空格。我怎样才能做到这一点?我也尝试过:
str=str+" "*4+"somename"
这也提供与上面给出的输出相同的输出。我不想打印这个。该字符串用作更多其他操作的Ruby变量。我可以在Ruby中创建它,但不能在RoR中创建它。
答案 0 :(得分:5)
这与HTML处理空格的方式有关。我假设你使用的是基于你使用的类似Erb的语法。如果你真的必须输出空格,请使用
。
但我建议您尝试使用CSS修复此问题。
答案 1 :(得分:2)
遵循相同的结构,它将是
str = raw(str + " " + "somename")
在HTML中,只计算一个空白区域,无论多少。因此,您必须使用HTML实体
(表示非破坏空间)来显示多个空格。
raw
部分是必需的,因为默认情况下,Rails不允许HTML实体或任何实际的HTML输出字符串,因为恶意用户可以使用它们来攻击您的网站和/或用户。
因此,您必须使用raw
并在Rails中使用
。
答案 2 :(得分:0)
您的变量中可能有4个空格,但浏览器会在1个空格后截断多余的空格,因此您可能无法查看它们。尝试以下
<pre>
<%= str %>
</pre>
您将看到代码中添加了空格。要实现你想要做的事情而不是空白
答案 3 :(得分:0)
如果您尝试在控制台中执行以下代码,则会发现问题出在您的html;
str="Myname"
str=str+" "+"somename"
=> "Myname somename"
尝试如下
<pre>
<%= str %>
</pre>
答案 4 :(得分:0)
你可以用html编码字符串替换空格,然后使用html_safe或raw like渲染,
<%= raw "Myname somename".gsub(/\s/, " ") %>
答案 5 :(得分:0)
<pre>I am a bad web programmer</pre>
存在祸害的预标签应该不惜一切代价避免。 在你的erb中使用它。
<%= raw(CGI.escapeHTML(str).gsub(/\s/, ' ')) %>