如何将每个换行符转换/替换为“<br/>”?

时间:2011-12-06 18:52:24

标签: html ruby-on-rails ruby

set tabstop=4
set shiftwidth=4
set nu
set ai
syntax on
filetype plugin indent on

我试过这个,content.gsub("\r\n","<br/>")但是当我点击视图/显示按钮查看这些行的内容时,我得到输出/结果=&gt;

set tabstop=4<br/> set shiftwidth=4<br/> set nu<br/> set ai<br/> syntax on<br/> filetype plugin indent on

但我试图将这些线条作为单独的线条。但所有这些都成为一条线。为什么呢?

如何使用html中断所有这些行(<br/>)?

我尝试了这个,但是没有用。

@addpost = Post.new params[:data]
@temptest = @addpost.content.html_safe
@addpost.content = @temptest
#logger.debug(@addpost)
@addpost.save

还尝试不保存到数据库中。仅在视图层中尝试,<%= t.content.html_safe %>这也不起作用。

从页面来源

获取此信息
        <a href="/posts/36">vimrc file</a> <br/>
        2011-12-06<br/><br/>

        set tabstop=4&lt;br/&gt;&lt;br/&gt;set shiftwidth=4&lt;br/&gt;&lt;br/&gt;set nu&lt;br/&gt;&lt;br/&gt;set ai&lt;br/&gt;&lt;br/&gt;syntax on&lt;br/&gt;&lt;br/&gt;filetype plugin indent on<br/>

            <a href="/posts/36/edit">Edit</a>
            <a href="/posts/36" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Delete</a>
        <br/><br/>

5 个答案:

答案 0 :(得分:20)

将每个新行转换为html标记<br>的替代方法是使用css显示内容:

.wrapped-text {
    white-space: pre-wrap;
}

这会将内容包装在新行上,而不会改变其当前形式。

答案 1 :(得分:6)

如果要渲染嵌入式HTML,则需要使用html_safe

<%= @the_string.html_safe %>

如果它可能为零,则raw(@the_string)不会抛出异常。我对raw有点矛盾;我几乎从不尝试显示可能是nil的字符串。

答案 2 :(得分:5)

使用Ruby On Rails 4.0.1来自TextHelper的simple_format。它将处理比OP请求更多的标签,但会过滤内容中的恶意标签(清理)。

simple_format(t.content)

参考:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html

答案 3 :(得分:3)

http://www.ruby-doc.org/core-1.9.3/String.html 因为它说gsub期待正则表达式和替换 因为“\ n \ r”是一个字符串,你可以在文档中看到:

  

如果以字符串形式给出,它包含的任何正则表达式元字符将按字面解释,例如, '\ d'将匹配后跟'd'的反弹,而不是数字。

所以你试图匹配“\ n \ r”,你可能想要一个包含\ n或\ r的字符类 - [\ n \ r]

a = <<-EOL
set tabstop=4
set shiftwidth=4
set nu
set ai
syntax on
filetype plugin indent on
EOL
print a.gsub(/[\n\r]/,"<br/>\n");

答案 4 :(得分:1)

我不确定我是否完全按照这个问题进行操作 - 您是否将输出视为例如预格式化的文本,或源HTML是否具有这些标签?如果源HTML包含这些标记,它们应该出现在新行上,即使它们不在源代码中的换行符,对吧?

无论如何,我猜你正在处理自动字符串转义。查看this other Stack Overflow question 另外,这个:Katz talking about this feature