Як обернути link_to навколо якогось html-ruby-коду?


116

Як обернути посилання навколо коду перегляду? Я не можу зрозуміти, як передавати кілька рядків з кодом рубіну в один link_toметод. Я шукаю результат - ви натискаєте стовпець і отримуєте сторінку показу:

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

Відповіді:


270

link_to приймає блок коду (> = Rails 2.2), який використовуватиме як тіло тегу.

Отже, ви робите

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

Але я впевнений, що вбудовувати divвсередину aтегу не є дійсним HTML.

EDIT: Доданий =символ на коментар Аміна Аріани нижче.


17
Цей коментар є лише посиланням: <a> <div> </div> </a> дійсний у HTML5, але не в попередніх специфікаціях HTML. Дивіться stackoverflow.com/questions/796087/make-a-div-into-a-link для подібного питання.
chucknelson

Rails 2.3.8 все ще отримує "синтаксичну помилку, несподівана ')'", використовуючи вищевказаний синтаксис.
daedelus_j

Якщо у вас складніший шлях, ви можете просто додати параметри, пропустивши початковий вміст, наприклад, <% = link_to some_path, метод:: post%>
Obromios

13

Також це може бути проблемою для деяких:

Не забудьте написати, <%=якщо ви робите просте посилання з кодом в ньому замість <%.

напр

<%= link_to 'some_controller_name/some_get_request' do %>
  Hello World
<% end  %>

Я думаю, що це потрібно в Rails 3+
m33lky

8

Для старих версій Rails можна використовувати

<% content_tag(:a, :href => foo_path) do %>
  <span>Foo</span>
<% end %>


-2

Трохи відставання від цієї відповіді я знаю - але мене сьогодні направили сюди, і я не знайшов гарної відповіді. Слід працювати:

<% link_to raw(html here), @album %>

5
Це не слід використовувати, оскільки всі html, що вводяться всередині raw, схильні до XSS.
Aurril

Не обов'язково, можливо, HTML-код генерується десь із вашого власного додатка, який, на вашу думку, є безпечним. Але все-таки найкраще уникати цього у 99% ситуацій. (Не кажучи вже про вищезазначений код, у будь-якому випадку є помилка, він повинен початись <%=, ні <%.)
GMA

Не найкращий спосіб. html тут повинен бути згенерований вашим власним додатком і забезпечений для безпечного. Є й інші кращі способи у відповідях вище.
Танець Джошуа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.