【问题标题】:How to fix escaping of HTML after rails upgrade from Rails 2 to Rails 3从 Rails 2 升级到 Rails 3 后如何修复 HTML 的转义
【发布时间】:2014-05-08 06:19:24
【问题描述】:

我有一个使用 rails 2.3.8 的 rails 应用程序。我计划将其升级到 3.0.10。为此,我使用 rails_upgrade gem 来更改配置文件。然而,升级到较新版本后,我可以看到整个布局被搞砸了,并且 html 被转义了。例如,我看到 &lt 而不是 。最初,我怀疑较旧的 haml gem 是转义 html 的原因。但是我将 Gem 文件更改为具有最新的 haml gem 。我正在使用haml 4.0.5。我错过了什么。这让我很生气。任何帮助表示赞赏。这是因为不兼容的 gem 还是某些配置搞砸了? 该视图的代码粘贴在此处。

%table.grid.full
  %tr
    %td.grid.full_panels
      -table_panel "Project Listing" do
        %table.treetable_trigger
          %thead
            %tr 
              %th Name
              %th priority
              -Project::PLATFORM_OPTIONS.each do |platform_name,platform|
                %th=platform_name
              %th ICs 
          %tbody
            - for project in @projects
              %tr{:class => cycle(:odd, :even), :id => dom_id(project)}
                -if project.prj_disabled? #if project is disabled add color to title and disabled notification
                  %td.nowrap.body_only_tooltip_trigger{:title => project.description+ " <pre><strong>CURRENTLY DISABLED</strong></pre>"}= link_to project.name, project, {:style=>'color:#FF0000;'}
                -else
                  %td.nowrap.body_only_tooltip_trigger{:title => project.description}= link_to project.name, project
                -if project.priority == 28
                  - proj_priority = "Low"
                -elsif project.priority == 4
                  - proj_priority = "Medium"
                -else
                  - proj_priority = "High"    
                %td= proj_priority
                -for platform in Project::PLATFORMS
                  %td= project.send(platform) ? 'Enabled' : 'Disabled'
                %td= pluralize project.exclusions_count, "Exclusion"

=javascript_include_tag 'pages/project_index.min.js'

创建网格面板时 html 被转义。

【问题讨论】:

  • 你能在HTML被转义的地方发布view code吗?
  • @Pavan 粘贴了我的查看代码。你对此有任何线索

标签: javascript ruby-on-rails ruby-on-rails-3 escaping


【解决方案1】:

您在此行中嵌入 HTML 标签(pre 和 strong)。

%td.nowrap.body_only_tooltip_trigger{:title => project.description+ " <pre><strong>CURRENTLY DISABLED</strong></pre>"}= link_to project.name, project, {:style=>'color:#FF0000;'}

只需将.html_safe 添加到具有 HTML 的字符串片段即可。

%td.nowrap.body_only_tooltip_trigger{:title => project.description+ " <pre><strong>CURRENTLY DISABLED</strong></pre>".html_safe}= link_to project.name, project, {:style=>'color:#FF0000;'}

【讨论】:

    【解决方案2】:

    我想我能够打破这个。我不知道为什么 html_safe 不起作用,我将助手中的 concat 替换为 safe_concat 。 Rails 3 不应该与 concat 一起使用。 它将导致 javascript 的转义。

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多