Ich habe drei Attribute, die ich auf einer Seite anzeigen möchte: length
, height
und width
.bedingt zurückgegebene Attribute in Ruby
Wenn ein viertes Attribut (variable_dimensions
) für das Objekt auf true festgelegt ist (wodurch die Eingabe von Daten für die anderen Attribute ungültig wird), möchte ich eine Zeichenfolge zurückgeben, die "Dimensionsvariable" lautet. Wenn width
Null ist, möchte ich length
x height
zurückgeben. Ich möchte die volle length
x height
x width
andernfalls zurückgeben.
Ich habe dies als ein Helfer versucht.
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
Dies funktioniert, wenn dimensions_variable
auf true gesetzt ist. Es macht was ich will mit den Objekten, die variable Dimensionen haben. In den anderen beiden Fällen wird auf die Seite als ein Array gedruckt, das aussieht wie [60.3, 35.4, nil], wenn width
Null ist, und andernfalls [39, 45.3, 30.4]. Wie entferne ich das Array-Styling, so dass es wie 10cm x 30cm x 48cm aussieht? Ich habe das vorher mit der String-Interpolation versucht, aber mir wurde gesagt, dass es ein Anti-Pattern ist.
Mit Blick auf Ihre [vorherige Frage] (https://stackoverflow.com/questions/44273038/check-if-variables-are-null-and-if-not-print) ist es klar, dass Sie missverstanden haben, was Tadman versuchte um Ihnen zu sagen. String-Interpolation ist kein Antipattern. Die spezifische Konstruktion '# {x} '' (in der die Zeichenkette nichts anderes enthält als einen einzigen' # {...} 'Interpolationsausdruck) ist ein Antipattern, weil du' x' * mit * nichts interpolierst -es entspricht 'x.to_s'. '" # {x} cm x # {y} cm x # {z} cm "' ist * kein * Antipattern. –