你在正确的轨道上。我会这样做:
def product_image_tag(product, options = {})
options[:size] ||= "200x200"
if img = product.product_images.first
image_tag("products/#{img.filename}", :alt => img.alt_text, :size => options[:size])
else
image_tag("http://placehold.it/#{options[:size]}", :size => options[:size])
end
end
将最后一个参数设置为空散列是一种常见的Ruby习惯用法,因为您可以调用
product_image_tag(product, :a => '1', :b => '2', :c => '3', ...)
没有显式地使剩余的参数成为具有
{}
options[:size] ||= "200x200"
if img = product.product_images.first
-Ruby让你在一个条件下做作业,这太棒了。在这种情况下,如果
product.product_images.first
返回nil(无图像),则返回placehold.it公司链接,否则显示第一个图像。