代码之家  ›  专栏  ›  技术社区  ›  stephenmurdoch

Rails3正在将HTML标记打印到屏幕上,而不是呈现它们

  •  3
  • stephenmurdoch  · 技术社区  · 14 年前

    我使用的是vhochstein的fork of active_scaffold,它在Rails 3上运行得非常好,除了一些小的bug- http://github.com/vhochstein/active_scaffold.>

    在Rails 2.3中,以下代码禁用链接:

    return“<a class='disabled'>text</a>”除非获得授权
    < /代码> 
    
    

    但是在Rails3中,它会导致转义的HTML标记被打印出来,如下图所示:

    如何使这个返回语句的内容呈现在Rails3中应该呈现的方式?

    上面的代码来自供应商/插件/active_scaffold/helpers中的list_column_helpers.rbfile/

    更新:

    Floatless通过建议向代码中添加.html_safe->code>来修复此问题。

    此后我发现,由于有多个代码位可用于禁用活动脚手架中的操作链接,因此还需要进行以下更改:

    in/plugins/active_scaffold/frontends/default/views/list_actions.html.erb更改:

    <%=record.authorized_for?(:crud_type=>等-%>
    
    把它变成“生的”
    
    即
    
    <%=原始记录。授权用于?(:crud_type=>等-%>
    < /代码> 
    
    

    不管怎样,多亏了无浮力,希望霍克斯坦先生能够使用这些东西。.

    在Rails 2.3中,以下代码禁用链接:

    return "<a class='disabled'>#{text}</a>" unless authorized
    

    但是在Rails3中,它会导致转义的HTML标记被打印出来,如下图所示:

    https://internet-websites.s3.amazonaws.com/image2886.png

    如何使此返回语句的内容呈现Rails 3中的内容?

    上面的代码来自list_column_helpers.rb供应商/插件/活动脚手架/助手中的文件/

    更新:

    无浮动通过建议添加.html_safe代码。

    此后我发现,还需要进行以下更改,因为有一个以上的代码位可用于禁用活动_scaffold中的操作链接:

    in/plugins/active_scaffold/frontends/default/views/list_actions.html.erb更改:

    <%= record.authorized_for?(:crud_type => etc etc etc -%>
    
    By making it use "raw"
    
    i.e. 
    
    <%= raw record.authorized_for?(:crud_type => etc etc etc -%>
    

    不管怎样,多亏了无漂浮物,希望霍克斯坦先生能够使用这些东西。

    1 回复  |  直到 12 年前
        1
  •  12
  •   Daniel O'Hara    14 年前

    试试这个:

    return "<a class='disabled'>#{text}</a>".html_safe unless authorized