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

shi*_*bly 3 html ruby ruby-on-rails

set tabstop=4
set shiftwidth=4
set nu
set ai
syntax on
filetype plugin indent on
Run Code Online (Sandbox Code Playgroud)

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

set tabstop=4<br/> set shiftwidth=4<br/> set nu<br/> set ai<br/> syntax on<br/> filetype plugin indent on
Run Code Online (Sandbox Code Playgroud)

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

如何使用html break(<br/>)创建所有这些行?

我尝试过这个,但是没用.

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

也试过而不保存到数据库中.仅在视图层中尝试,<%= 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/>
Run Code Online (Sandbox Code Playgroud)

Dom*_*let 20

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

.wrapped-text {
    white-space: pre-wrap;
}
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ton 6

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

<%= @the_string.html_safe %>
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,在视图层工作,我必须这样做,<%temptest2 = @ post.content.gsub(/ [\n] /,"<br />")%> <%= temptest2.html_safe%> (2认同)

Dom*_*let 5

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

simple_format(t.content)
Run Code Online (Sandbox Code Playgroud)

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