如何将变量link_to定义到外部URL
在我的网站上,用户拥有个人资料,其中包含指向其个人外部网站的链接。 我存储在名称网站下的postgresql数据库中的网站的url 。 当我测试结果时,我总是得到这样的url:
http://localhost:3000/www.example.com
而不是http://www.example.com
我的观点index.html.erb如下所示:
All projects
和我的_micropost.html.erb这样:
我不知道在这种情况下有什么问题。 如果我在micropost.website之前设置一个@,它会给我一个错误的未定义方法`website’为nil:NilClass
有没有人可以帮助我(我是RoR初学者)?
KR,Fabian
听起来您正在存储没有http://
URL,因此它们被解释为相对URL。 你只需要做这样的事情:
link_to micropost.website, "http://#{micropost.website}"
或者可以在该模型中添加一个full_url
方法,如果它缺失则添加它。
顺便说一下,你不能在那部分中使用@micropost
,因为它不存在(你只有@microposts
或者micropost
@microposts
)。
您可以尝试以下代码:
<%= link_to "your label", "your link with http", :target => "_blank" %>
这将创建一个在新选项卡中打开的链接。
你可以这样做:
link_to micropost.website, url_for(micropost.website)
请参阅Rails Api:url_for
您可以在rails控制台中进行实验。 只需键入控制台:
micropost = Micropost.first helper.link_to micropost.website, url_for(micropost.website)
你看到一个结果字符串。
您还需要了解路径和URL助手之间的区别。 请参阅ruby on rails指南。
五郎权利。 您需要在网站属性中添加“http://”。 validation之后,在将Model实例保存到数据库之前,需要添加此前缀。
您可以使用ruby URI类
= link_to micropost.website, URI::HTTP.build({:host => micropost.website}).to_s, target: "_blank" # www.example.com
我使用postrank-uri gem来规范化url,然后将其传递给link_to
。
class User < ActiveRecord::Base def normalized_webpage webpage && PostRank::URI.normalize(webpage).to_s end end
然后你可以在你的视图中使用link_to "website", user.normalized_webpage, target: "_blank"
。 例如,如果缺少http://
,则将其添加到url中。
我正在使用Rails 5,我遇到了同样的问题。 我需要做的就是修复它,就是在我的link_to
标签上包含协议。 例如,我有www.google.com.mx
,那么它应该是http://www.google.com.mx
。 这就像它在官方文档中提到的那样工作得很好。
所以,最后我在我看来只有这样的东西:
<%= link_to (content_tag(:i, "help", class: 'material-icons tiny')), " http://www.google.com.mx", target: "_blank", rel: "alternate" %>
这与:
<%= link_to "help", "http://www.google.com.mx", target: "_blank", rel: "alternate" %>
我希望它可以帮助别人。
这就是我做的。
假设我们有@person,他有一个链接(@ person.link)#=> http://www.google.com
在你的助手中创建这样的东西
def extlink(link) if link.include?("http://") puts link else link.insert(0, "http://") link end
结束
在你的文件中,你可以做到
<% @person.each do |p| %> <%= link_to 'External', extlink(p.link) %> <% end %>
适合我