2016-11-08 6 views
1

Я пытаюсь преобразовать следующий HTML в качестве помощника рубина:пытается конвертировать HTML в помощнике рельсы

<a href="home.html" class="hvr-sweep-to-bottom"> 
    <i class="flaticon-insignia"></i> 
    <span>home</span> 
</a> 

Вот мой код так далеко, что не работает:

link_to home_path(media), class: 'hvr-sweep-to-bottom' do 
    content_tag(:i, class: 'flaticon-insignia') {} 
    content_tag(:span) do 
     menu_item.title 
    end 
end 

Этот производит следующие выходные данные:

<a class="hvr-sweep-to-bottom" href="/"> 
    <span>Home</span> 
</a> 

Как это получить?

+0

Когда вы говорите, что «не работает», какие симптомы вы видите? – Tass

+0

@ Philip7899, когда ваш блок имеет более одного 'content_tag', вам нужно' concat' их, добавьте 'concat' в каждый' content_tag', который у вас есть в вашем блоке. Это пример: 'concat (content_tag ...)' – fanta

+0

Почему вы хотите использовать вспомогательный, а не частичный? –

ответ

1

link_to, когда был принят блок, будет обернуть <a> теги вокруг того, что блок возвращает. В коде:

link_to home_path(media), class: 'hvr-sweep-to-bottom' do 
    content_tag(:i, class: 'flaticon-insignia') {} 
    content_tag(:span) do 
     menu_item.title 
    end 
end 

единственное время возвращается окончательный вызов метода (content_tag(:span) do ... end). Есть несколько способов написания этого, например, с помощью String#concat, но вот как я обычно делаю это:

link_to home_path(media), class: 'hvr-sweep-to-bottom' do 
    link_text = content_tag(:i, class: 'flaticon-insignia') {} 
    link_text << content_tag(:span) do 
     menu_item.title 
    end 
end 

Заметим также, что в вашем примере, menu_item.title является Home не home; и home_path(media) - / не home.html - поэтому вы все равно не будете иметь идентичный HTML. Тем не менее, это те отдельные проблемы, о которых вы должны думать.

+0

Я вполне уверен, что там где-то есть .html_safe. –

+0

@SergioTulentsev, мы пытаемся помочь человеку задавать вопрос, а не собирать каждый символ в коде, с которым мы работаем. – Tass

0

сростить content_tags вместе, используя + symbol:

link_to home_path(media), class: 'hvr-sweep-to-bottom' do 
    content_tag(:i, '', class: 'flaticon-insignia') + content_tag(:span, menu_item.title) 
end 

Это должно сделать это

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

  • Нет связанных вопросов^_^