2011-03-16 42 views
0

我想:如何产生的轨道视图改变行字符(.html.erb文件)

<%= "foo \n bar" %> 

只获得了“富巴”。 Rails似乎忽略了转义字符。自从我从数据库获取输入后,如何生成更改行字符,“\ n”是表示更改行的记录的一部分。 (我必须写在控制器通过带文本解析器?我觉得这样太麻烦了......)

回答

0

你可以简单地用HTML断线取代它们,因为<% =%>将输出为HTML。所以,

<%= "foo \n bar".gsub("\n","<br />") %> 
0

我检查了simple_html函数的代码。它实际上是一个gsub调用如下:

# File actionpack/lib/action_view/helpers/text_helper.rb, line 253 
     def simple_format(text, html_options={}, options={}) 
     text = ''.html_safe if text.nil? 
     start_tag = tag('p', html_options, true) 
     text = sanitize(text) unless options[:sanitize] == false 
     text.gsub!(/\r\n?/, "\n")     # \r\n and \r -> \n 
     text.gsub!(/\n\n+/, "</p>\n\n#{start_tag}") # 2+ newline -> paragraph 
     text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br 
     text.insert 0, start_tag 
     text.html_safe.safe_concat("</p>") 
     end 

之前它不工作的原因是我需要添加html_safe调用。我记得我之前遇到过这个。它仅适用于导轨3。因此nkassis没有错。

事实上如下我可以编写代码:

<%= "foo \n bar".gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />').html_safe %> 
+0

simple_format实际上是调用'gsub'并用'p'标签包装双间隔的paragrafs。 – fl00r 2011-03-16 16:58:13