¿Cómo puedo envolver el enlace en algún código html ruby?


¿Cómo envuelvo un enlace alrededor del código de la vista? No puedo averiguar cómo pasar varias líneas con código ruby a un único método link_to. El resultado que estoy buscando es que haga clic en la columna y obtenga la página de presentación:

<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>
Author: Pesto, 2009-07-06

5 answers

link_to toma un bloque de código (>=Rails 2.2) que usará como el cuerpo de la etiqueta.

Así que, lo haces

<%= link_to(@album) do %>
  html-code-here
<% end %>

Pero Estoy bastante seguro de que anidar un div dentro de una etiqueta a no es HTML válido.

EDITAR: Añadido = carácter por el comentario de Amin Ariana a continuación.

 254
Author: Thorbjørn Hermansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-20 09:43:55

También, esto puede ser un problema para algunos:

Asegúrese de escribir <%= si está haciendo un enlace simple con código en él en lugar de <%.

Por ejemplo

<%= link_to 'some_controller_name/some_get_request' do %>
  Hello World
<% end  %>
 12
Author: sybohy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-20 09:23:42

Para versiones anteriores de Rails, puede usar

<% content_tag(:a, :href => foo_path) do %>
  <span>Foo</span>
<% end %>
 8
Author: Omar Qureshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-06 20:43:46

Puedes usar link_to con un bloque:

<% link_to(@album) do %>
    <!-- insert html etc here -->
<% end %>
 6
Author: Barry Gallagher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-06 10:44:56

Un poco de retraso en esta respuesta, lo sé but pero me enviaron aquí hoy, y no encontré una buena respuesta. Lo siguiente debería funcionar:

<% link_to raw(html here), @album %>
 0
Author: Rob Dawson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-06 05:48:55