在我的网站上,用户拥有个人资料,并带有指向其个人外部网站的链接。我在PostgreSQL数据库中以网站的名称存储的网站的URL。当我测试结果时,我总是得到这样的网址:
http://localhost:3000/www.example.com
代替
http://www.example.com
我的 View index.html.erb 看起来像这样:
<% provide(:title, 'All projects') %>
<h1>All projects</h1>
<%= will_paginate %>
<ul class="microposts">
<%= render @microposts %>
</ul>
<%= will_paginate %>
和我的 _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>
我不知道在这种情况下是什么问题。如果我在 micropost.website 之前设置了@,则会为nil:NilClass 提供一个错误未定义方法`website'
谁能帮我(我是RoR初学者)?
法比安KR
最佳答案
听起来您存储的URL没有http://
,因此它们被解释为相对URL。您只需要执行以下操作:
link_to micropost.website, "http://#{micropost.website}"
或向该模型添加
full_url
方法,如果缺少该方法,则将其添加。顺便说一句,您不能在该部分中使用
@micropost
,因为它不存在(您只有@microposts
或micropost
)。