4

我知道 rails 会自动转义诸如“<”或“&”之类的字符,但这对于相邻的多个空格没有任何作用。我想逃避一切,包括空间。

我知道通常你不想使用&nbsp;,你应该使用 css 来代替。但是,我试图接受用户输入并显示它,所以 css 是不可行的。

例如,我有用户输入:    test    . 当我<%=@user_input%>在视图中显示它时,额外的空格显示为一个空格(尽管它在源中正确显示)。

有没有一种简单的方法来逃避空白?我应该只使用h @user_input然后替换所有空格吗?

4

1 回答 1

8

空格不会被删除。浏览器只是将多个空白字符解释为一个空格。

如果需要,您可以将每个空间转换为&nbsp;

<%= raw @user_input.gsub(/\s/, "&nbsp;") %>

您也可以用空标签替换每个空格<span class="whitespace"></span>,然后使用 CSS 设置您喜欢的空白“字符”样式。

最后,您也可以使用样式(下面的示例)仅使用 CSS来执行此操作。white-space: pre

编辑 (回答您评论中的后续问题)

<%= raw h("this      is      a    sample   &  with   ampersand.").gsub(/\s/, "&nbsp;") %>

这会转义源代码中的&as (并且对其他 HTML 实体执行类似操作),然后进行to转换。&amp;" "&nbsp;

于 2012-07-28T01:23:13.237 回答