【问题标题】:trying to convert html to a rails helper试图将 html 转换为 rails helper
【发布时间】:2016-11-08 18:42:45
【问题描述】:

我正在尝试将以下 html 转换为 ruby​​ 助手:

<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>

如何让它工作?

【问题讨论】:

  • 当你说它“不起作用”时,你看到了什么症状?
  • @Philip7899,当你的区块有多个content_tag时,你需要concat它们,将concat添加到你的区块中的每个content_tag。这是一个例子:concat(content_tag...)
  • 为什么要使用helper而不是partial?
  • @Tass 我编辑了我的问题以显示 Ruby 助手的输出。它只是将跨度打印到屏幕上,而不是 i 标签。
  • @MuradYusufov 我需要使用基于我当前架构的助手

标签: ruby-on-rails ruby ruby-on-rails-4 link-to


【解决方案1】:

link_to,当传递一个块时,会将&lt;a&gt;标签包裹在块返回的任何地方。在您的代码中:

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.titleHome 而不是 homehome_path(media)/ 而不是 home.html - 所以你仍然不会得到相同的 HTML。但是,这些都是需要您考虑的不同问题。

【讨论】:

  • 我很确定在某处需要.html_safe
  • @SergioTulentsev,我们正在尝试帮助提出问题的人,而不是挑剔我们正在使用的代码中的每个字符。
【解决方案2】:

使用 + symbolcontent_tags 连接在一起:

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

应该这样做

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2015-06-16
    • 2011-06-02
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多