Как мне добавить span в 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?

4 ответа

Решение

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}"}) %>

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

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

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

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

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

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

= 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)}

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

Другие вопросы по тегам