Showing part of an array

Let’s say you have an array which might contain:

colors = [“black”,“white”,“red”,“yellow”,“green”]

And you’d like to see the first three elements with a … attached to
the end if there are more than 3.

“colors[0,2].join(’, ‘) + ’ …’ if colors.count > 3”

Which of course is blank in there are less than 3 elements in the array.

How do I limit the if to only working on the ’ …’ part?

Sorry for the newbie question, but I have no idea what to even look for
in the docs.

Thanks!

Rosina Bignall wrote:

How do I limit the if to only working on the ’ …’ part?

def print_color(colors)
if colors.size > 3
puts colors[0,3].join(’, ‘)+’ …’
else
puts colors.join(’, ')
end
end


Xicheng

Rosina Bignall wrote:

How do I limit the if to only working on the ’ …’ part?

puts “#{colors[0, 2].join(’, ‘)}#{’…’ if colors.length > 3}”

Daniel S. wrote:

Rosina Bignall wrote:

How do I limit the if to only working on the ’ …’ part?

puts “#{colors[0, 2].join(’, ‘)}#{’…’ if colors.length > 3}”

That’s what I thought, but this is actually being passed as an argument
to be evaluated:

@scaffold_columns = [
AjaxScaffold::ScaffoldColumn.new(self, { :name => “colors”,
:eval => “#{breed.colors[0, 2].collect{ |color| color.name}.join(’,
‘)}#{’…’ if breed.colors.length > 3}”,
:sortable => false } )
]

so I am just left with an blank column.

Thanks for your help!
Rosina

I think this example is asking for the ternary op.

 colors = %w( black red white yellow green )
 colors[0,3].join(', ') + (colors.length > 3 ? ' ...' : '')

Dumaiu wrote:

I think this example is asking for the ternary op.

 colors = %w( black red white yellow green )
 colors[0,3].join(', ') + (colors.length > 3 ? ' ...' : '')

Thank you! Thank you! Thank you! Yes, that’s exactly what it needs!

Cheers,
Rosina

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs