Rails:link_to和外部网址

时间:2016-02-05 01:32:54

标签: ruby-on-rails

对rails很新。我正在做一个用户提交网址和标题的项目。 标题应该链接到用户提供的 url 。该网址存储为link的参数。

以下是索引视图中的代码:

<% @links.each do |link| %>
  <%= link_to link.title, link.url %>
  <%= link_to "comments", link %>
<% end %>

这在大多数情况下都有效。

如果提交的网址不以http://开头,则会出现此问题。实际上,它指向http://localhost:3000/google.com,我收到错误No route matches [GET] "/google.com"

我怎么能绕过这个?我尝试将其更改为:

<%= link_to link.title, "http://#{link.url}" %>

哪个使google.com有效,但http://google.com以某种方式转变为http://http//google.com

我确定这个修复将是一个面孔的时刻!

2 个答案:

答案 0 :(得分:1)

在您的输入字段中,您可以执行<input type="text" name="url" value="http://">之类的操作,以便您的网址始终以http://开头。如果需要,用户还可以手动将其更改为https。

此外,我可以在模型中添加full_url方法,如果它丢失,则添加它。

答案 1 :(得分:1)

如果网址不存在,请在网址前加上网址:

module ApplicationHelper
  def url_with_protocol(url)
    /^http/i.match(url) ? url : "http://#{url}"
  end
end

<%= link_to link.title, url_with_protocol(link.url) %>
答案来自this SO问题/答案