Как добавить диапазон в 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 %>