Rails 正在使用 .html_safe 转义视图中的 erb 行
Rails is escaping erb lines in a view using .html_safe
这是我在 Stack Overflow 上的第一个 post,我想这不是我开发之旅的最后一个。
在我的 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 标签,我肯定在这里做错了什么,但我无法弄清楚。
Result in Chrome
我希望<%= simulation.house_rent_amount_per_year %>显示它的值
是否有任何线索可以将此 erb 转换为 html?
提前谢谢你,
Mth0158
it does seem to escape erb tags
发生这种情况是因为您在助手中呈现 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>
这是我在 Stack Overflow 上的第一个 post,我想这不是我开发之旅的最后一个。
在我的 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 标签,我肯定在这里做错了什么,但我无法弄清楚。
Result in Chrome
我希望<%= simulation.house_rent_amount_per_year %>显示它的值
是否有任何线索可以将此 erb 转换为 html?
提前谢谢你,
Mth0158
it does seem to escape erb tags
发生这种情况是因为您在助手中呈现 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>