0

假设我有,

<%= @order.shipping.address1 + '<br />' unless @order.shipping.address1 %>
<%= @order.shipping.address2 + '<br />' unless @order.shipping.address2 %>

如何返回带有默认标签剥离的变量,并将“
”打印为 html_safe?

据推测,包装在 <%= raw ... %> 中会引发安全问题,因为变量没有被剥离 html。

4

1 回答 1

1

您不想使用 raw 或 html_safe 之类的东西,因为正如您所说的那样,它会在地址字段中打开漏洞。

你可以像这样重写它:

<% unless @order.shipping.address1 %>
  <%= @order.shipping.address1 %> 
  <br />
<% end %>
<% unless @order.shipping.address2 %>
  <%= @order.shipping.address2 %>
  <br />
<% end %>

但我会考虑使用 html/css 而不是添加断线。用 div 包围它实际上会使下一个元素出现在下一行,因为 div 是一个块元素,因此会创建一个换行。

看法:

<% unless @order.shipping.address1 %>
  <div>
    <%= @order.shipping.address1 %> 
  </div>
<% end %>
<% unless @order.shipping.address2 %>
  <div>
    <%= @order.shipping.address2 %>
  </div>
<% end %>

如果您需要进一步的样式,您可以添加一个类并将 css 用于宽度、高度和其他内容。

于 2013-03-13T12:12:36.103 回答