我想在页面上显示三个属性:height
,width
和variable_dimensions
。
如果对象上的第四个属性(width
)设置为true(从而无需输入其他属性的数据),我想返回一个显示“Dimensions变量”的字符串。如果length
为零,我想返回height
x length
。我想以其他方式返回完整的height
x width
x module ItemsHelper
def dimensions_available(length, height, width)
if @item.variable_dimensions == true
return "Dimensions variable"
elseif width.nil?
dimensions = length, height
return dimensions
else
dimensions = length, height, width
return dimensions
end
end
end
。
我曾尝试过这个帮手。
dimensions_variable
当width
设置为true时,此方法有效。它使用具有可变尺寸的对象执行我想要的操作。在另外两种情况下,它作为一个数组打印到页面,当{{1}}为零时看起来像[60.3,35.4,无],否则为[39,45.3,30.4]。如何删除阵列样式,使其看起来像10cm x 30cm x 48cm?我之前尝试使用字符串插值,但被告知这是一种反模式。
答案 0 :(得分:3)
使用compact
,您可以移除任何nil
维度:
module ItemsHelper
def dimensions_available(length, height, width)
if @item.variable_dimensions
"Dimensions variable"
else
[length, height, width].compact.map do |dim|
"#{dim}cm"
end.join(' x ')
end
end
end
此外,您无需return
或== true
。
答案 1 :(得分:2)
你可以这样做:
module ItemsHelper
def dimensions_available(length, height, width)
if @item.variable_dimensions
"Dimensions variable"
elsif width.nil?
"#{length}cm x #{height}cm"
else
"#{length}cm x #{height}cm x #{width}cm"
end
end
end