我有一个使用rails 2.3.8的rails应用程序。我打算将它升级到3.0.10。为此,我使用了rails_upgrade gem来更改配置文件。但是在升级到更新的版本后,我可以看到整个布局搞砸了并且html被转义了。例如,我看到& lt而不是<和& gt而不是> 。最初我怀疑较旧的haml gem是逃避html的原因。但是我更改了Gem文件以获得最新的haml gem。我正在使用haml 4.0.5。我错过了什么。这让我很生气。任何帮助表示赞赏。这是因为不兼容的宝石或某些配置搞砸了吗? 视图代码粘贴在此处。
%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会被转义。
答案 0 :(得分: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;'}
答案 1 :(得分:0)
我想我能够打破这种局面。我不知道html_safe无法正常工作的原因,我用hel_concat替换helper中的concat。 Rails 3不应与concat一起使用。 它将导致javascript的转义。