How do I wrap link_to around some html ruby code?

Ruby on-RailsRuby

Ruby 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 %>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionatmorellView Question on Stackoverflow
Solution 1 - Ruby on-RailsThorbjørn HermansenView Answer on Stackoverflow
Solution 2 - Ruby on-RailssybohyView Answer on Stackoverflow
Solution 3 - Ruby on-RailsOmar QureshiView Answer on Stackoverflow
Solution 4 - Ruby on-RailsBarry GallagherView Answer on Stackoverflow
Solution 5 - Ruby on-RailsRob DawsonView Answer on Stackoverflow