如何逃避Rails中的空白?

Cas*_*sie 4 whitespace escaping ruby-on-rails html-entities ruby-on-rails-3

我知道rails会自动转义像'<'或'&'这样的字符,但这对于彼此相邻的多个空格没有任何作用.我想逃避一切,包括空间.

我明白通常你不想使用&nbsp;,你应该使用css代替.但是,我正在尝试接受用户输入并显示它,因此css不可行.

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

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

dee*_*our 9

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

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

<%= raw @user_input.gsub(/\s/, "&nbsp;") %>
Run Code Online (Sandbox Code Playgroud)

您也可以使用空<span class="whitespace"></span>标记替换每个空格,然后使用CSS来设置空白"字符"的样式,无论您喜欢什么.

最后,您也可以使用该样式使用CSS (下面的示例).white-space: pre

编辑 (回答评论中的后续行动)

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

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