How do I wrap link_to around some html ruby code?
Ruby on-RailsRubyRuby on-Rails Problem Overview
How do I wrap a link around view code? I can't figure out how to pass multiple lines with ruby code to a single link_to
method. The result I am looking for is that you click the column and get the show page:
<div class="subcolumns">
<div class="c25l">
<div class="subcl">
<%= image_tag album.photo.media.url(:thumb), :class => "image" rescue nil %>
</div>
</div>
<div class="c75r">
<div class="subcr">
<p><%= album.created_at %></p>
<%= link_to h(album.title), album %>
<p><%= album.created_at %></p>
<p><%= album.photo_count %></p>
</div>
</div>
</div>
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
link_to
takes a block of code ( >= Rails 2.2) which it will use as the body of the tag.
So, you do
<%= link_to(@album) do %>
html-code-here
<% end %>
But I'm quite sure that to nest a div
inside a a
tag is not valid HTML.
EDIT: Added =
character per Amin Ariana's comment below.
Solution 2 - Ruby on-Rails
Also, this may be an issue for some:
Make sure to write <%=
if you are doing a simple link with code in it instead of <%
.
e.g.
<%= link_to 'some_controller_name/some_get_request' do %>
Hello World
<% end %>
Solution 3 - Ruby on-Rails
For older Rails versions, you can use
<% content_tag(:a, :href => foo_path) do %>
<span>Foo</span>
<% end %>
Solution 4 - Ruby on-Rails
You can use link_to
with a block:
<% link_to(@album) do %>
<!-- insert html etc here -->
<% end %>
Solution 5 - Ruby on-Rails
A bit of a lag on this reply I know -- but I was directed here today, and didn't find a good answer. The following should work:
<% link_to raw(html here), @album %>