html – 在保留URL的同时在Rails中包装一个长字符串?

在我的Rails项目中,我有以下代码:

auto_link( h( wrap_long_string(post.text,50)  )).gsub(/\n/,"<br />")

wrap_long_string定义为:

  def wrap_long_string(txt,col = 20)
    txt.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/,
      "\\1\\3\n")
  end

此代码旨在显示用户输入的文本,同时通过输入非常长的非破坏字符串来防止用户弄乱页面布局.

但是,分解长不间断字符串的行为也会阻止auto_link助手工作.

我想做的是有以下文字:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search

变成了这样的东西:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br/>aaaaaaaaaa <a href='http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search'>http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search</a>

最佳答案 或者,你可以定义你自己的auto_link(使用text_helper.rb中的现有代码作为模型)来首先扫描网址(和电子邮件),进行替换,找到你做出替换的指数,然后打破在不属于这些指数的地方的线.

这应该只需要现有的自动链接代码以及对index()和length()的调用.

点赞