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
).
You can try with this below code:
<%= link_to "your label", "your link with http", :target => "_blank" %>
This will create a link that opens in a new tab.
You can do something like that:
link_to micropost.website, url_for(micropost.website)
See Rails Api: url_for
You can experiment in rails console. Just type in console:
micropost = Micropost.first
helper.link_to micropost.website, url_for(micropost.website)
And you see a result string.
Also you need to learn the difference between path and url helpers. See ruby on rails guide.
Goro rights. You need to add "http://" to your website attribute. After validating and before save Model instance to database you need to add this prefix.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With