代码之家  ›  专栏  ›  技术社区  ›  Gdeglin

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

  •  4
  • Gdeglin  · 技术社区  · 15 年前

    在我的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>
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   klochner    15 年前

    或者,您可以定义自己的自动链接(使用文本helper.rb中的现有代码作为模型),首先扫描URL(和电子邮件),进行替换,找到替换位置的索引,然后在不属于这些索引的位置中断行。

    这只需要现有的自动链接代码以及对index()和length()的多次调用。

        2
  •  1
  •   workmad3    15 年前

    如果您可以控制这些应用程序的顺序,我建议您先通过自动链接帮助器运行文本,然后通过长文本分隔符运行文本(并使其“智能化”到不将HTML标记中的文本计算为文本:)。这应该会创建链接,我相信你可以
    在没有任何不良后果的标签之间:)