在我的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()的调用.