问题 Rails 3. simple_format不会将结果包装在段落标记中


如何使simple_format不将返回的值包装在p标签中?

simple_format "<span class="required">*</span>"


5558
2018-01-03 20:26


起源



答案:


不幸的是 - 你不能。如果你看看来源 http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format 你会看到p标签无条件地包裹在内容中。

您可以创建一个使用simple_format代码的帮助程序,但将其修改为不包含p标记...


10
2018-01-03 20:32



是否有simple_format的替代品?我希望我的方法显示的是 <span class="required">*</span> 并解释HTML - leonel
好吧 - simple_format只有9行长,如果你删除了第二行,第八行和第九行,它就不会再放P标签了。但是,我不确定“解释HTML”是什么意思? - elijah
看起来像在Rails 4中你可以像这样更改包装器标签 simple_format(my_text, {}, wrapper_tag: "div") 但它在Rails 3中对我不起作用 - FireDragon


答案:


不幸的是 - 你不能。如果你看看来源 http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format 你会看到p标签无条件地包裹在内容中。

您可以创建一个使用simple_format代码的帮助程序,但将其修改为不包含p标记...


10
2018-01-03 20:32



是否有simple_format的替代品?我希望我的方法显示的是 <span class="required">*</span> 并解释HTML - leonel
好吧 - simple_format只有9行长,如果你删除了第二行,第八行和第九行,它就不会再放P标签了。但是,我不确定“解释HTML”是什么意思? - elijah
看起来像在Rails 4中你可以像这样更改包装器标签 simple_format(my_text, {}, wrapper_tag: "div") 但它在Rails 3中对我不起作用 - FireDragon


你可以指定 wrapper_tag 选项。

simple_format 'Hello', {}, wrapper_tag: 'span'

这段代码将是:

<span>Hello</span>

4
2018-01-01 21:11





可能不是你真正想要的,但是......我最终做到了这一点:

module ApplicationHelper
  def nl2br s
    split_paragraphs(sanitize(s, tags: [])).join('<br>').html_safe
  end
end

UPD 或者更好的是:

def nl2br s
  sanitize(s, tags: []).gsub(/\n/, '<br>').html_safe
end

2
2018-04-16 08:22