我发现自己经常在 HTML HEAD 和其他地方编写这样的代码:
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
然后,如果合适,我在控制器中设置变量。
有没有什么方法可以在一行上编写等效的代码,或者可能有另一种组织代码的方式?
我发现自己经常在 HTML HEAD 和其他地方编写这样的代码:
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
然后,如果合适,我在控制器中设置变量。
有没有什么方法可以在一行上编写等效的代码,或者可能有另一种组织代码的方式?
对不起,双重答案,所以只会让我发布一个网址。
或者,您的问题可以通过在您希望此内容出现在布局中的视图中使用 content_for来解决。
好的,我想出了这个解决方案。在模板中:
<%= 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
我需要更多的上下文来确定你想要做什么。鉴于您提供的信息,我建议您查看 Rails 的 canonical-url 插件。
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 %>