簡體   English   中英

erb中雙引號屬性值的字符串插值

[英]string interpolation for double-quoted attribute value in erb

如何編寫雙引號屬性轉義的erb表達式並獲得正確的轉義行為?

例如,我想要將輸出的內容:

value="Hello World"

如果should_print_value為true,並假設myvalue = Hello World

編輯 :注意: myvalue可能包含惡意內容

方法1

如果我嘗試類似

<%= "value=\"#{myvalue}\"" if should_print_value %>

erb將轉義雙引號,從而導致value=&quotHello和另一個名為World&quot=""屬性

方法2

我想出的最簡單的解決方案是:

<% if should_print_value %>
  value="<%= myvalue %>"
<% end %>

但是我仍然對方法1的<%= "value=.... %>語法是否可行感到好奇。

正如@BroiSatse指出的,請使用:

<%= "value=\"#{myvalue}\"".html_safe if should_print_value %>

或者,我希望在視圖中:

<%= raw "value=\"#{myvalue}\"" if should_print_value %>

這會將內容標記為安全,但是您需要注意myvalue不是惡意的。 您可以使用CGI.escape類的方法來正確格式化可能會帶來安全風險的特殊字符。

如果您承諾使用內聯解決方案,則<input ...value="<%= myvalue if should_print_value %>">應該插入正確轉義的myvalue或空字符串(有效地告訴輸入為空),具體取決於should_print_value 我可能會選擇您的方法2,因為我覺得它更清晰一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM