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 に答える