我发现自己经常在HTML HEAD和其他地方编写这样的代码:
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
然后我在控制器中设置变量,如果合适的话。
有没有办法在一行上编写等效文件,或者可能采用不同的方式组织代码?
答案 0 :(得分:2)
很抱歉双重回答,我只会发布一个网址。
或者,您可以使用content_for in your views解决问题,以便在布局中显示此内容。
答案 1 :(得分:1)
好的,我想出了这个解决方案。在模板中:
<%= 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
答案 2 :(得分:1)
我需要更多的上下文来确定你要做的是什么。鉴于您提供的信息,我建议您查看canonical-url plugin for Rails。
答案 3 :(得分:0)
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 %>