【问题标题】:link_to in helper with block带有块的帮助程序中的 link_to
【发布时间】:2012-07-03 18:35:44
【问题描述】:

我正在努力让它发挥作用:

link_to("#", class: "add_fields btn btn-success") do
  name
  content_tag(:i, "", :class => "icon-plus icon-white")
end

但它只显示i(twitter-bootstrap css)指定的图标而不是name中的文本,我做错了什么?

【问题讨论】:

    标签: ruby-on-rails forms twitter-bootstrap


    【解决方案1】:

    块的返回值成为它的内容。只返回最后一行。

    您必须将两个字符串与+ 连接在一起以产生单个返回值:

    link_to("#", class: "add_fields btn btn-success") do
      name + content_tag(:i, "", class: "icon-plus icon-white")
    end
    

    您需要使用html_safe 来防止您的标签内容自动被 HTML 编码:

    link_to("#", class: "add_fields btn btn-success") do
      name + content_tag(:i, "", class: "icon-plus icon-white").html_safe
    end
    

    根据 Twitter Bootstrap 的个人经验,我知道您需要在 namecontent_tag 之间留一个空格:

    link_to("#", class: "add_fields btn btn-success") do
      name + ' ' + content_tag(:i, "", class: "icon-plus icon-white").html_safe
    end
    

    或者,如果您在 ERB 模板中,则可以使用 <%= 输出这两个值:

    <%= link_to( ... ) do %>
      <%= name %>
      <%= content_tag( ... ) %>
    <% end %>
    

    【讨论】:

    • 如果我这样做我的按钮显示:foo&lt;i class="icon-plus icon-white"&gt;&lt;/i&gt;
    • 您可以使用 HTML safe 将您的字符串标记为不需要 HTML 编码。
    • 我也用 html_safe 对其进行了测试,但它没有工作,但这工作:link_to("#", class: "add_fields btn btn-success") do (name + ' ' + content_tag(:i, "", :class =&gt; "icon-plus icon-white")).html_safe end 如果你愿意,你可以更新你的答案,非常感谢!
    【解决方案2】:

    我会考虑两件事:

    1) link_to 块的全部内容需要清理。

    link_to("#", class: "add_fields btn btn-success") do
      (name + content_tag(:i, "", class: "icon-plus icon-white")).html_safe
    end
    

    2) 我们可以期望输入是nil吗?

    如果我们在 nil 对象上调用 html_safe,事情就会中断。如果有可能发生这种情况,请使用raw

    link_to("#", class: "add_fields btn btn-success") do
      raw(name + content_tag(:i, "", class: "icon-plus icon-white"))
    end
    

    This 是一个很好的阅读主题。 My blog post 提出了一个有趣的应用。

    【讨论】:

      【解决方案3】:

      对于那些使用 font-awesome 或其他东西的人,它可能不会显示图标。但这个解决方案奏效了。

      link_to :sort => column, :direction => direction do
         "#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多