我正在嘗試將 HTML 標記<br>解釋為換行符,但當我嘗試執行此操作時,它會在視圖中顯示為字串文字:
<%= property.address_line_2 "<br>" if property.address_line_2.present? %>
我試過了raw(),.html_safe但它們的效果相同。
<%= property.address_line_2 raw("<br>") if property.address_line_2.present? %>
<%= property.address_line_2 "<br>".html_safe if property.address_line_2.present? %>
是否有一種優雅/慣用的方式來做到這一點,或者是使用另一條線的最佳方式?我認為這種方法并不那么干燥:
<%= property.address_line_2 if property.address_line_2.present? %>
<% if property.address_line_2.present? %><br><% end %>
uj5u.com熱心網友回復:
我會用
<% if property.address_line_2.present? %>
<%= property.address_line_2 %><br>
<% end %>
這還有一個額外的好處是更容易閱讀
uj5u.com熱心網友回復:
html_safe必須回傳字串才能使標簽不被轉義:
<%= "<br>".html_safe %>
當html_safe字串 akaActiveSupport::SafeBuffer連接到常規字串 akaString時,結果是常規未轉義字串:
>> "<br>".html_safe.class
=> ActiveSupport::SafeBuffer
>> ("address" "<br>".html_safe).class
=> String
>> ("address" "<br>".html_safe).html_safe?
=> false
raw只是一個輔助方法,它做同樣的事情,但to_s首先呼叫:.to_s.html_safe
>> include ActionView::Helpers::OutputSafetyHelper
>> ("address" raw("<br>")).html_safe?
=> false
>> raw("address" "<br>").html_safe?
=> true
# NOTE: this doesn't work
>> ("address".html_safe "<br>").html_safe?
=> true
# but the tag is escaped
>> "address".html_safe "<br>"
=> "address<br>"
如果您必須將標簽連接為字串,請將整個結果標記為 html 安全:
<%= (property.address_line_2 "<br>").html_safe %>
<%= property.address_line_2.html_safe "<br>".html_safe %>
<%= raw(property.address_line_2 "<br>") %>
<%== property.address_line_2 "<br>" %>
safe_join如果您不想冒險使整個字串安全,但仍想添加標簽,請使用helper:
<%= safe_join [property.address_line_1, "<br>".html_safe] %>
一口氣完成整個地址:
<% address_1 = "1st Street NE"; address_2 = " "; address_3 = nil; city = "City"; state = "Sate"; country = "Country" %>
<%=
safe_join(
[
address_1,
address_2,
address_3,
[city, state].join(", "),
country
].reject(&:blank?),
tag.br
)
%>
# returns html safe string
"1st Street NE<br>City, Sate<br>Country"
# and renders
1st Street NE
City, Sate
Country
也只需使用普通的erb:
<% if (line = property.address_line_1.presence) %>
<%= line %>
<br>
<% end %>
https://api.rubyonrails.org/classes/String.html#method-i-html_safe
https://api.rubyonrails.org/classes/ActionView/Helpers/OutputSafetyHelper.html#method-i-raw
https://api.rubyonrails.org/classes/ActionView/Helpers/OutputSafetyHelper.html#method-i-safe_join
https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-tag
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482385.html
