2016-11-08 57 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 

应该这样做