2 things are going on here
1) i don't believe you are getting back what you think you are getting back from .map 2) the entity you are working with in your block is the actual entity, not a copy. so you are basically overwriting your original array of entities
.map returns a new array based on whatever it is you do in within the block
[1,2,3].map { |x| x*3 } #=> [3,6,9]
in your case the last statement in the block is
entity.title += " (#{entity.status_title})"
so your block is going to return whatever that evaluates to, not the entity object you are expecting.
in addition, your block is actually overwriting all the values of the @entities objects you are passing in. if you were to compare the titles of the @entities objects before and then after .map is called, you're going to see that they are different.
ex:
class Thing attr_accessor :foo end
a = Thing.new a.foo = "abc" b = Thing.new b.foo = "xyz"
x = [a,b].map { |c| c.foo += " modified" } a.foo # => "abc modified" b.foo # => "xyz modified" x = ["abc modified", "xyz modified"] # you expected this to be an array of Thing objects
if you do want to overwrite the attributes of your objects, just use .each
@entities.each do |entity| ... end