0

我发现自己经常在 HTML HEAD 和其他地方编写这样的代码:

<% if @canonical_url %>
  <link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>

然后,如果合适,我在控制器中设置变量。

有没有什么方法可以在一行上编写等效的代码,或者可能有另一种组织代码的方式?

4

4 回答 4

2

对不起,双重答案,所以只会让我发布一个网址。

或者,您的问题可以通过在您希望此内容出现在布局中的视图中使用 content_for来解决。

于 2009-11-08T21:34:23.367 回答
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
于 2009-11-08T21:03:33.330 回答
1

我需要更多的上下文来确定你想要做什么。鉴于您提供的信息,我建议您查看 Rails 的 canonical-url 插件

于 2009-11-08T21:31:04.843 回答
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 %>
于 2009-11-08T21:33:40.673 回答