Ruby on rails Rails中的自定义链接

Ruby on rails Rails中的自定义链接,ruby-on-rails,hyperlink,Ruby On Rails,Hyperlink,Rails有一些用于处理链接的内置帮助器方法(url\u for、link\u to、auto\u link),但没有一种方法能完全满足我的需要: 我希望用户能够指定一个URL,并且对我来说能够更改它显示为的文本。auto_link几乎满足了我的要求,只是你不能更改链接文本,而且它不能识别像stackoverflow.com这样键入的链接。您必须进入www.stackoverflow.com 我希望用户能够输入类似“stackoverflow.com”的内容,并能够生成如下html: <a

Rails有一些用于处理链接的内置帮助器方法(url\u for、link\u to、auto\u link),但没有一种方法能完全满足我的需要:

我希望用户能够指定一个URL,并且对我来说能够更改它显示为的文本。auto_link几乎满足了我的要求,只是你不能更改链接文本,而且它不能识别像stackoverflow.com这样键入的链接。您必须进入www.stackoverflow.com

我希望用户能够输入类似“stackoverflow.com”的内容,并能够生成如下html:

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


有没有一个插件可以添加额外的链接助手方法?

你可以将一个块传递给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
类似,还有另一个url

这加上注释中关于调整URL正则表达式的提示,似乎它们可以满足您的要求。

要覆盖
auto\u link
的正则表达式,您可以在
config/initializers/auto\u link\u regex.rb
中创建一个ruby文件,并按给定粘贴代码。按照您想要的方式修改正则表达式。不过,我无法破解可以解决你问题的正则表达式。你可以在rubular.com上查看regexp,我已经在一些测试用例上试用了Chirantan的版本,它可以正常工作