【问题标题】:Rails - Custom html into simple_form labelRails - 自定义 html 到 simple_form 标签
【发布时间】:2013-02-03 09:59:34
【问题描述】:

我正在尝试自定义 simple_form 关联的输出,基本上我需要在两行上显示一个复选框标签。我的想法是在“标签”中添加一个“br”标签,但不幸的是它被转义了,所以它实际上显示“br”而不是换行

我使用 lambda 来自定义标签输出

<%= f.association :item, :as => :check_boxes, :collection => current_user.items, :label => false, :label_method => lambda { |item| "#{item.city.capitalize},<br> #{item.address}" }%>

这会在标签字符串中产生一个转义的 br,我怎样才能在两行上显示标签?

【问题讨论】:

    标签: ruby-on-rails associations simple-form


    【解决方案1】:

    在你不想被转义的字符串上调用html_safe方法。

    <%= f.association :item, :as => :check_boxes, :collection => current_user.items, :label => false, :label_method => lambda { |item| "#{item.city.capitalize},<br> #{item.address}".html_safe }%>
    

    【讨论】:

    • 似乎很容易受到 XSS 攻击。您应该强制转义用户输入,即:"#{h item.city.capitalize},&lt;br&gt; #{h item.address}".html_safe
    • 这条评论没有增加任何有用的东西,但是谢谢你 - 一个解决恶化问题的简单方法。
    【解决方案2】:

    对于那些希望在元素中自定义 html 的人,正如 OP 问题的标题所暗示的那样,您可以这样做:

    = f.input(:Foo, label: "Foo <span>(Blah helper text blah)</span>".html_safe)
    

    【讨论】:

      【解决方案3】:

      html_safe 有帮助吗?

      <%= f.association(....).html_safe %>
      

      如果没有,请在 github 上发布一个示例应用程序来展示此问题,以便我们对其进行调试

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多