On my site a user has a personal profile with a link to his personal external website. The url of the sites I store in a postgresql database under the name website. When I test the result, I always get a url like this:
http://localhost:3000/www.example.com
instead of http://www.example.com
My view index.html.erb looks like this:
<% provide(:title, 'All projects') %>
<h1>All projects</h1>
<%= will_paginate %>
<ul class="microposts">
<%= render @microposts %>
</ul>
<%= will_paginate %>
and my _micropost.html.erb like this:
<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>
I don't know what's the problem in this case. If I set a @ before micropost.website it gives me an error undefined method `website' for nil:NilClass
Does anyone can help me (I'm a RoR beginner)?
KR, Fabian
It sounds like you are storing URLs without the http://
so they are being interpreted as relative URLs. You just need to do something like this:
link_to micropost.website, "http://#{micropost.website}"
or maybe add a full_url
method to that model that adds it if it's missing.
By the way, you can't use @micropost
in that partial because it doesn't exist (you only have @microposts
or micropost
).