我有類似的東西:
<%= "<p class='...'>#{product.value}</p>".html_safe if product.value %>
所以我想顯示value包裝在一些 html 中(如果存在)。問題是這value是一種需要進行一些計算的方法,并且每個產品值的上述方法都計算了兩次,這使我的頁面加載時間加倍。
有什么辦法可以優化這個嗎?
uj5u.com熱心網友回復:
出于可讀性原因,我會非常明確:
<% if (calculated_value = product.value) %>
<p class='...'><%= calculated_value %></p>
<& end %>
uj5u.com熱心網友回復:
我認為以下應該有效:
<%= product.value.then { |v| content_tag(:p, v, class: '...') if v } %>
該value方法僅在product物件上呼叫一次。之后,它被傳遞到一個塊then,該塊將定義整個運算式的結果。無需再次呼叫該value方法,在塊內我們確定應該回傳的值是什么(如果有)。
注意: HTML 物件的生成已被content_tag輔助方法的呼叫所取代。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328618.html
上一篇:列印一個沒有括號和小括號的字典
