【问题标题】:Unescaping inline links in haml在haml中取消转义内联链接
【发布时间】:2010-09-25 23:11:48
【问题描述】:

所以我试图在电子邮件表单的标题旁边获取一个删除链接。但是,我的rails voodoo 显然很弱。它转义了 HTML,我不知道如何让它不转义。有什么提示吗?

= f.input :email, :label => "Email " + link_to_remove_fields("[x]", f)

[edit] 哦,是的,这也是一样的:

= f.input :email, :label => "Email #{link_to_remove_fields("[x]", f)}"

这是我的辅助方法...

def link_to_add_fields(name, f, association)
    new_object = f.object.class.reflect_on_association(association).klass.new
    fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
      render(association.to_s.singularize + "_fields", :f => builder)
    end
    link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
  end

【问题讨论】:

    标签: ruby-on-rails haml


    【解决方案1】:

    这并不难解决。默认情况下,Rails 会转义所有内容。为了防止您可以在任何字符串上使用 html_safe 方法。这将解决您的问题。

    = f.input :email, :label => "电子邮件" + link_to_remove_fields("[x]", f).html_safe

    = f.input :email, :label => "Email #{link_to_remove_fields("[x]", f).html_safe}"

    记住不要把它放在整个标记化字符串的末尾,否则它将不起作用。例如,这是行不通的。

    = f.input :email, :label => "Email #{link_to_remove_fields("[x]", f)}".html_safe

    希望这对您有所帮助。 =)

    【讨论】:

    • 这对我不起作用...我认为这是我的辅助方法。我已经把代码放在了我的问题中,我应该把 html_safe 放在哪里?
    • 如果你在你的助手中生成字符串,你还需要在它们上使用 .html_safe ,否则当它们到达你的视图时它们已经被转义了。您似乎在该块内调用其他助手,您可以发布它们吗?
    • 它们只是形式化的调用。如果我逃避它们中的任何一个,由于某种原因,它会在我的代码的其他部分产生很多错误。
    • 好吧,如果您在帮助程序中找不到修复它的位置,您可以使用 htmlentities gem 来解码实体。该库非常易于使用,并且可以解码您扔给它的任何内容。查看htmlentities.rubyforge.org
    • 或试试f.input(:email, :label => "...").html_safe
    【解决方案2】:

    我遇到了同样的问题,我通过在我的助手中使用以下内容来修复它:

    link_to_function(name, "add_fields(this, '#{association}', \'#{escape_javascript(fields)}\')")
    

    需要注意的是,当我在 Rails 3.1 应用程序中尝试此操作时,我必须重新启动服务器,然后才能获取帮助程序中的更改。这对于早期版本可能正确,也可能不正确,但值得牢记。

    【讨论】:

      【解决方案3】:

      试试这个:

      require 'cgi'
      
      unescaped = CGI.unescapeHTML(string)
      

      【讨论】:

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