tet*_*rto 0 string ruby-on-rails add line between
我有一个名为模型的文本属性:settore_scientifico_progetto和三个字符串属性:macrocat,:cat,:microcat:
class Modulo1 < ActiveRecord::Base
before_create :set_settore_scientifico_progetto
before_update :update_settore_scientifico_progetto
private
def set_settore_scientifico_progetto
self.settore_scientifico_progetto = "#{macrocat}\n#{cat}\n#{microcat}"
end
def update_settore_scientifico_progetto
self.settore_scientifico_progetto = "#{macrocat}\n#{cat}\n#{microcat}"
end
Run Code Online (Sandbox Code Playgroud)
我想在输入的内容前加一行,\n但是我发布的代码给了我输出
macrocat cat microcat。
我希望如下:
macrocat
猫
的Microcat
输出显示在show.html.erb:
<div class="form-field">
<h3>Settore scientifico:</h3>
<p><%= @modulo1.settore_scientifico_progetto %></p>
</div>
Run Code Online (Sandbox Code Playgroud)
Rails有一个专门用于此目的的助手simple_format。
<%= simple_format @modulo1.settore_scientifico_progetto %>
Run Code Online (Sandbox Code Playgroud)
这将输出以下HTML:
<p>macrocat<br/>
cat<br/>
microcat
</p>
Run Code Online (Sandbox Code Playgroud)
这是由您的浏览器呈现的,如下所示:
macrocat
猫
的Microcat
这似乎正是您要寻找的内容,它会为您清理HTML。(在docs中列出了用于定制输出的选项,例如,更改包装标签或HTML属性。)
PS使用gsub...html_safe上面提倡的方法非常危险。如果您的应用接受您要打印的任何属性的用户输入,则调用html_safe这些值意味着它们将不会被ActionView清除,并且恶意用户可能会将代码注入视图中,从而使您的应用容易受到跨站点脚本的攻击( XSS)攻击。这是有关html_safeRails 来龙去脉的一个很好的入门。