如何逃避Rails中的空白?

时间:2012-07-28 01:12:49

标签: ruby-on-rails ruby-on-rails-3 escaping whitespace html-entities

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

我了解通常您不想使用 ,而是应该使用css代替。但是,我正在尝试接受用户输入并显示它,因此css不可行。

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

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

1 个答案:

答案 0 :(得分:9)

不删除空格。浏览器只是将多个空格字符解释为单个空格。

如果您愿意,可以将每个空格转换为&nbsp;

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

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

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

修改 (以回答评论中的后续行动)

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

这会将&转义为源中的&amp;(并且会对其他HTML实体执行类似的操作),然后执行" "到{{ 1}}转换。