Faw*_*wyd 33 ruby-on-rails link-to ruby-on-rails-3
在我的网站上,用户拥有个人资料,其中包含指向其个人外部网站的链接.我存储在名称网站下的postgresql数据库中的网站的网址.当我测试结果时,我总是得到这样的网址:
http://localhost:3000/www.example.com
Run Code Online (Sandbox Code Playgroud)
代替 http://www.example.com
我的观点index.html.erb如下所示:
<% provide(:title, 'All projects') %>
<h1>All projects</h1>
<%= will_paginate %>
<ul class="microposts">
<%= render @microposts %>
</ul>
<%= will_paginate %>
Run Code Online (Sandbox Code Playgroud)
和我的_micropost.html.erb这样:
<li>
<span class="title"><%= micropost.title %></span>
<span class="website"><%= link_to micropost.website, micropost.website %></span>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
</li>
Run Code Online (Sandbox Code Playgroud)
我不知道在这种情况下有什么问题.如果我在micropost.website之前设置一个@,它会给我一个错误的未定义方法`website'为nil:NilClass
有没有人可以帮助我(我是RoR初学者)?
KR,Fabian
Gor*_*oro 62
听起来你没有存储URL,http://
所以它们被解释为相对URL.你只需要做这样的事情:
link_to micropost.website, "http://#{micropost.website}"
Run Code Online (Sandbox Code Playgroud)
或者可以full_url
在该模型中添加一个方法,如果它缺失则添加它.
顺便说一句,你不能使用@micropost
那部分,因为它不存在(你只有@microposts
或micropost
).
小智 20
您可以尝试以下代码:
<%= link_to "your label", "your link with http", :target => "_blank" %>
这将创建一个在新选项卡中打开的链接.