我有一个包含text类型的注释字段的Portfolio模型,其值是由cr和nl字符的某些组合分隔的一组段落。目标是将段落提取到一个数组中,将它们包装在< p>中。标记,并重新加入它们以输出到浏览器;所以下面代码中的焦点是第6-8行。
我遇到的问题是<和>字符被渲染为HTML实体& lt;和& gt;。
我是Ruby和Rails的新手,所以我的猜测是因为我没有按预期工作的原因是因为我可能采取了不正确的方法 - 而且我想知道一个经验丰富的Ruby编码器会解决这种情况。在将HTML标记发送到视图之前,如何将HTML标记插入到内容中?或者这总是违反了MVC模型 - 在这种情况下,解决这类问题的正确方法是什么?
以下是代码:
1. module ApplicationHelper
2.
3. def portfolio_featured
4. @portfolios = Portfolio.all
5. @portfolios.each do |p|
6. paras = p.comments.split(/\r?\n\r?\n/)
7. paras.collect! { |p| "<p>" + p + "</p>" }
8. p.comments = paras.join
9. end
10. end
11.
12. end
答案 0 :(得分:1)
查看simple_format TextHelper。
这可能就是你要找的东西。
答案 1 :(得分:0)
您可以使用TextHelper#simple_format或类似Bluecloth(Markdown)之类的东西,但如果您想自己烹饪,那就是您可以写的(关键是使用safe_join):
def portfolio_featured
safe_join(Portfolio.all.map do |portfolio|
portfolio.comments.lines.map { |line| content_tag(:p, line.chomp) }
end)
end