Как добавить диапазон в link_to с изображением

Итак, у меня есть это:

<%= link_to(image_tag(@model.picture.url(:thumb), :alt => ''), "/pages/you/#{something.id}", {:id => "y_link_#{something.id}"}) %>

Что работает, но мне нужен промежуток между ними и так:

 <a id="y_link_2" href="/pages/you/2" class="">
     <span>Apples</span>
     <img src="another_small.jpg?1236340989" alt="">
 </a>

Как добавить

 <span>Apples</span>

в link_to?

Ответ 1

image_tag и content_tag возвращают основные строки, поэтому их можно легко конкатенировать с помощью оператора +:

<%= link_to(content_tag(:span, "Apples") + image_tag(@model.picture.url(:thumb), :alt => ''), "/pages/you/#{something.id}", {:id => "y_link_#{something.id}"}) %>

Однако, как вы можете видеть, он становится довольно грязным - возможно, стоит переместить его в вспомогательный метод.

Ответ 2

Подайте блок на ваш link_ для вызова:

<% link_to("/pages/you/#{something.id}", {:id => "y_link_#{something.id}"}) do %>
  <%= content_tag(:span, 'Apples') %>
  <%= image_tag(@model.picture.url(:thumb), :alt => '') %>
<% end %>

В качестве альтернативы:

<% link_to("/pages/you/#{something.id}", {:id => "y_link_#{something.id}"}) do %>
  <span>Apples</span>
  <%= image_tag(@model.picture.url(:thumb), :alt => '') %>
<% end %>

Ответ 3

Haml хорошо подходит для подобных ситуаций. Например:

= link_to "/pages/you/#{something.id}", id: "y_link_#{something.id} do
    %span Apples
    = image_tag(@model.picture.url(:thumb), alt: '')

Альтернативно:

%a[something, 'y_link']{href: "/pages/you/#{something.id}"}
    %span Apples
    %img{src: @model.picture.url(:thumb)}

Это стоит изучить, если вы хотите быстрее писать свои взгляды и читать их лучше.

Ответ 4

Для пути используйте такую ​​структуру

<%= link_to edit_section_path(@section) do %>
   Edit
   <span class="fa fa-list pull-right"></span>
<% end %>