2016-11-08 84 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'它們,''你的塊中每個'content_tag'都要加'concat'。這是一個例子:'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.titleHomehome;和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 

應該這樣做