首页 > 解决方案 > Rails 正在使用 .html_safe 转义视图中的 erb 行

问题描述

这是我在 Stack Overflow 上的第一篇文章,我猜这不是我的开发者旅程中的最后一篇。

在我的 Rails 应用程序中,将作为文本插入的 html 内容转换为实际 html 时遇到问题。它适用于 html,除了使用 erb 的一行。

查看节目

show.html.erb

...
<%= render 'profitability_row_element', simulation: @simulation, type: "gross" %>
...

对应于模拟的显示,我们将所述模拟作为局部传递给我们的局部

部分的

_profitability_row_element.html.erb

      <p class="text-xs">
        <%= tooltip_formula(["Prix d'achat", "+", "Frais de notaire"]).html_safe %>
      </p>

为了给你一些上下文,这个想法是在下面显示一些带有相应公式的指标,然后当用户将鼠标悬停在公式的元素上时(例如“Prix d'achat”),它将显示计算中使用的值

帮手

simulations_helper.rb

module SimulationsHelper

  def tooltip_formula(formula_elements_array)
    formula_elements_array.map!.with_index do |formula_element, i|
      i.even? ? tooltip(formula_element) : formula_element
    end.join(' ')
  end

  def tooltip(formula_element)
    tooltip = 'class1'
    tooltiptext = 'class2'

    "<span class='#{tooltip}'>
      #{formula_element}
      <span class='#{tooltiptext}'>
        <%= simulation.#{convert_formula_element_to_corresponding_simulation_variable(formula_element)} %>
      </span>
    </span>"
  end

end

它适用于 html 内容(内容#{formula_element} 正确显示并且类#{tooltip} 和#{tooltiptext} 正确应用),但是它似乎确实逃脱了erb标签,我肯定在这里做错了但是我无法弄清楚。

结果在 Chrome

我想 <%= simulation.house_rent_amount_per_year %> 显示它的价值

任何可以将此 erb 转换为 html 的线索?

先感谢您,

Mth0158

标签: rubyruby-on-rails-6

解决方案


它似乎确实逃脱了 erb 标签

发生这种情况是因为您在帮助程序中呈现 HTML。将整个"<span ...代码移动到 erb 部分。它应该如下所示:

<p class="text-xs">
  <% ["Prix d'achat", "+", "Frais de notaire"].map.with_index do |formula_element, i| %>
    <% if i.even? %>
      <span...
    <% else %>
      <%= formula_element %>
    <% end %>
  <% end %>
</p>

推荐阅读