假设我有,
<%= @order.shipping.address1 + '<br />' unless @order.shipping.address1 %>
<%= @order.shipping.address2 + '<br />' unless @order.shipping.address2 %>
如何返回带有默认标签剥离的变量,并将“
”打印为 html_safe?
据推测,包装在 <%= raw ... %> 中会引发安全问题,因为变量没有被剥离 html。
假设我有,
<%= @order.shipping.address1 + '<br />' unless @order.shipping.address1 %>
<%= @order.shipping.address2 + '<br />' unless @order.shipping.address2 %>
如何返回带有默认标签剥离的变量,并将“
”打印为 html_safe?
据推测,包装在 <%= raw ... %> 中会引发安全问题,因为变量没有被剥离 html。
您不想使用 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 用于宽度、高度和其他内容。