我有一个新闻的描述。为了显示新闻文本,我使用了simple_format
,它将新行 Package 到<p></p>
标记中。
但是,新闻文本可能包含链接。现在我需要将文本中的链接 Package 到<a></a>
标签中。
如果有人能就如何做到这一点给予见解,那将是非常有帮助的。
示例文本:
Lorem ipsum dolor sit amet,consectetur adipisicing elit. Ad,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. Ad,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正则表达式匹配,然后将其 Package 在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
3条答案
按热度按时间rlcwz9us1#
我可以建议你几种方法来做到这一点,第一个和直接的方法是使用所见即所得编辑器,例如CKEditor或Tinymce,这将是最好的解决方案,当谈到写文章。
第二,你可以在URL的开头和结尾添加一些标记,以使解析更容易。
第三,你可以像Gagan在他的回答中提到的那样从字符串中提取URL,但是当URL之间没有空格或者相同的URL重复多次时,这也会失败。
所以,我认为使用任何WYSIWYG编辑器来解决每个情况下的这个问题都是很好的。
希望有帮助!
bihw5rsg2#
类似于此的功能曾经是Rails的一部分,但在Rails 3.1中被删除。Rails auto_link gem被提取出来,供升级人员使用。https://rubygems.org/gems/rails_autolink
这应该可以让你转换链接,然后简单地设置段落的格式:
cbeh67ev3#
正如**@devanand**评论的那样,最好将文本 Package 在所需的标记中并使用
html_safe
但是你需要把所有的url从
<a>
标签中的文本 Package 起来。Demo
**注意:**如RSB评论,如果URL的开头和结尾没有空格,
URI.extract
将无法工作