我知道rails会自动转义像'<'这样的字符或'&',但这对于彼此相邻的多个空格没有任何作用。我想逃避一切,包括空间。
我了解通常您不想使用
,而是应该使用css代替。但是,我正在尝试接受用户输入并显示它,因此css不可行。
例如,我有用户输入: test
。当我在视图中使用<%=@user_input%>
显示它时,额外的空格将显示为单个空格(尽管它在源中正确显示)。
有没有一种简单的方法来逃避空白?我应该只使用h @user_input
然后替换所有空格吗?
答案 0 :(得分:9)
不删除空格。浏览器只是将多个空格字符解释为单个空格。
如果您愿意,可以将每个空格转换为
:
<%= raw @user_input.gsub(/\s/, " ") %>
您也可以使用空<span class="whitespace"></span>
标记替换每个空格,然后使用CSS来设置空白'字符'的样式。
最后,您也可以使用white-space: pre
样式(以下示例),使用only CSS执行此操作。
修改 (以回答评论中的后续行动)
<%= raw h("this is a sample & with ampersand.").gsub(/\s/, " ") %>
这会将&
转义为源中的&
(并且会对其他HTML实体执行类似的操作),然后执行" "
到{{ 1}}转换。