2012-05-15 2 views
1

Как мне сделать следующее в одной строке?Блок с link_to на одной строке

<% song.albums.each do |album| %> 
    <%= link_to album.title, album %><br /> 
<% end %> 

Я пробовал два подхода, которые не сработали.

Это дает мне весь массив:

<%= song.albums.each {|album| link_to album.title, album } %> 

И этот выход является пустым:

<% song.albums.each {|album| link_to album.title, album } %> 

ответ

2
<%= song.albums.map{ |a| link_to(a.title,a) }.join("<br/>").html_safe %> 

Если вам действительно необходимо/желательно дополнительное <br/> после последнего пункта, то либо поставьте его после этого блока или используйте:

<%= song.albums.map{ |a| "#{link_to(a.title,a)}<br/>" }.join.html_safe %> 

Обратите внимание, что использование явного <br/> в вашем HTML обычно является «запахом кода»; вероятно, вы должны использовать CSS display:block на якоре или на обертывающем элементе, например <li>.

+0

Мне пришлось обернуть это в raw(), чтобы получить выход html. Но он отлично работает. Спасибо. – Brett

+1

@Brett Смотрите мое редактирование; вы также можете использовать [html_safe'] (http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html) для достижения ваших потребностей. Я предпочитаю это над «сырым», поскольку намерение более очевидно. – Phrogz

+0

Очень хорошо. Что касается
, я сохраняю все форматирование CSS для конца проекта. Я согласен с тем, что на данный момент он липкий. Еще раз спасибо. – Brett

Смежные вопросы