为每个产品生成唯一的元描述
Generate a unique metadescription for each product
我正在尝试为数据库中的每个产品生成不同的元描述。一个产品可以有多个值(几乎所有值都存储为数组)。
Show.html.erb
<% if @product.about.nil? %>
<% meta_description "#{@product.name} #{@product.type.join(" ")}
#{@product.location.join(" ")} #{@product.market.join(" ")}
{@product.material.join(" ")}" %>
<% else %>
<% meta_description "#{@product.about}" %>
<% end %>
我收到以下错误:
undefined method `join' for nil:NilClass
这是因为特定产品没有 #{@product.market.join(" ")}
和 #{@product.material.join(" ")}
的值。对于具有这些值的产品,没有错误。我该如何解决这个问题?谢谢
将 @product.material.join(" ")
更改为 @product.material.try(:join, " ")
。
此外,如果是我,我会将所有这些逻辑移出视图并移至@product 上的帮助程序或实例方法中。
示例实例方法:
class Product << ActiveRecord::Base
def meta_description
if about.present?
about
else
"#{name} #{type.try(:join, ' ')} #{location.try(:join, ' ')} #{market.try(:join, ' ')} {material.try(:join, ' ')}"
end
end
end
然后在视图中:
<% meta_description @product.meta_description %>
我正在尝试为数据库中的每个产品生成不同的元描述。一个产品可以有多个值(几乎所有值都存储为数组)。
Show.html.erb
<% if @product.about.nil? %>
<% meta_description "#{@product.name} #{@product.type.join(" ")}
#{@product.location.join(" ")} #{@product.market.join(" ")}
{@product.material.join(" ")}" %>
<% else %>
<% meta_description "#{@product.about}" %>
<% end %>
我收到以下错误:
undefined method `join' for nil:NilClass
这是因为特定产品没有 #{@product.market.join(" ")}
和 #{@product.material.join(" ")}
的值。对于具有这些值的产品,没有错误。我该如何解决这个问题?谢谢
将 @product.material.join(" ")
更改为 @product.material.try(:join, " ")
。
此外,如果是我,我会将所有这些逻辑移出视图并移至@product 上的帮助程序或实例方法中。
示例实例方法:
class Product << ActiveRecord::Base
def meta_description
if about.present?
about
else
"#{name} #{type.try(:join, ' ')} #{location.try(:join, ' ')} #{market.try(:join, ' ')} {material.try(:join, ' ')}"
end
end
end
然后在视图中:
<% meta_description @product.meta_description %>