【问题标题】:Custom links in RailsRails 中的自定义链接
【发布时间】:2010-11-25 04:03:46
【问题描述】:

Rails 有一些内置的帮助方法来处理链接(url_for、link_to、auto_link),但没有一个能完全满足我的需要:

我希望用户能够指定一个 URL,并让我能够更改它显示的文本。 auto_link 几乎可以满足我的要求,只是您无法更改链接文本,并且它无法识别键入的链接,例如:stackoverflow.com。您必须输入 www.stackoverflow.com

我希望用户能够输入“stackoverflow.com”之类的内容,并且让我能够生成这样的 html:

<a href="http://www.stackoverflow.com">Username</a>

是否有插件可以添加额外的链接帮助方法?

【问题讨论】:

  • 要覆盖auto_link 的正则表达式,您可以在config/initializers/auto_link_regex.rb 中创建一个ruby 文件并粘贴给定gist.github.com/715149 的代码。以您想要的方式修改正则表达式。不过,我无法破解适用于您的问题的正则表达式。还在尝试。
  • 您可以在 rubular.com 中检查该正则表达式,我已经在几个测试用例中尝试过 Chirantan 的版本,它可以工作

标签: ruby-on-rails hyperlink


【解决方案1】:

您可以将一个块传递给 auto_link,其结果将是链接文本。例如:

<% str = "something like http://stackoverflow.com would be the input" %>
<%= auto_link(str) do |url|
      "Username"
    end
%>

生成此 HTML:

something like <a href="http://stackoverflow.com">Username</a> would be the input

如果您希望链接文本根据 URL 的不同而有所不同,您可以执行以下操作:

<% str = "something like http://stackoverflow.com, and another http://stackexchange.com url" %>
<%= auto_link(str) do |url| 
  if url.match(/overflow/) 
    "Username"
  else
    "Something"
  end
end %>

生成:

something like <a href="http://stackoverflow.com">Username</a>, and another <a href="http://stackexchange.com">Something</a> url

这加上 cmets 中有关调整 URL 正则表达式的提示似乎可以满足您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2022-09-23
    • 2016-04-26
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多