在我的网站上,用户拥有个人资料,并带有指向其个人外部网站的链接。我在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,因为它不存在(您只有@micropostsmicropost)。

10-06 14:17