我發現自己經常寫這樣的代碼在HTML HEAD和其他地方:有條件地在視圖中顯示信息的更好方法?
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
然後我設置變量的控制,如果是適當的。
有沒有什麼方法可以在同一行上編寫等價物,或者用不同的方式來組織代碼?
我發現自己經常寫這樣的代碼在HTML HEAD和其他地方:有條件地在視圖中顯示信息的更好方法?
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
然後我設置變量的控制,如果是適當的。
有沒有什麼方法可以在同一行上編寫等價物,或者用不同的方式來組織代碼?
好的,我想出了這個解決方案。在模板:
<%= show_if('<link rel="canonical" href="$1"/>', @canonical_url) %>
然後輔助方法:
#
# Return the template text if the variable has a value.
#
def show_if(template, variable)
if variable
template.gsub('$1', variable)
else
''
end
end
我需要多一點的環境來確定它是什麼,你想要做的事。鑑於您提供的信息,我建議您查看canonical-url plugin for Rails。
def if_value(value, &block)
if value
concat(capture(value, &block))
end
end
<% if_value(@canonical_url) do |value| %>
<link rel="canonical" href="<%= value %>"/>
<% end %>
對不起,雙重答案,SO只會讓我發佈一個網址。
或者,您的問題可能通過使用content_for in your views來解決,您希望將此內容顯示在您的佈局中。