【发布时间】:2016-03-17 10:36:33
【问题描述】:
我有一个新闻的描述。为了显示新闻文本,我使用了simple_format,它将新行包装到<p></p> 标签中。
但是,新闻文本可能包含链接。现在我需要将文本中的链接包装到<a></a> 标签中。
如果有人能就如何做到这一点提供见解,那将非常有帮助。
示例文本:
Lorem ipsum dolor sit amet, consectetur adipisicing elit。广告,ea esse magni obcaecati quasi quis soluta velit。 Accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam https://stackoverflow.com/posts/36058019/edit
期望的输出:
Lorem ipsum dolor sit amet, consectetur adipisicing elit。广告,ea esse magni obcaecati quasi quis soluta velit。 Accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam? <a src="https://stackoverflow.com/posts/36058019/edit">https://stackoverflow.com/posts/36058019/edit</a>
我的方法
现在我通过以下函数解决了它。首先,我将字符串拆分为换行符,以确保simple_format 将插入适当的p 标签。然后,我将文本与 url 正则表达式匹配,然后将其包装在 a 标记中。
def parse_text(text)
text.split("\n").map do |t|
t.split(' ').map {|x| x.match(/https?:\/\/[\S]+/) ? "<a href=#{x}>#{x}</a>" : x }.join(' ')
end.join("\n").html_safe
end
【问题讨论】:
-
将示例文本粘贴到答案中
-
您可以在文本中添加 html 标签。在网页上显示文本字段需要将给定文本标记为“安全”。
field.html_safe应该可以解决您的问题。但请注意您的文字来自哪里! -
@RSB 添加了文本和想要的结果
标签: ruby-on-rails ruby