So I have the following:
flash[:success] = 'Your payment has completed. Please contact ' +
@order.seller.name + ' (mobile: ' +
@order.seller.mobile_number + ', email: ' +
@order.seller.email + ')'
Strangely inside this method, I can’t seem to do string interpolation
and
it prints ‘@order.seller.name’. So that is a strange issue.
But the main thing that puzzles me is should I be replacing + with <<
here?
I read somewhere the performance is better but I really hate seeing <<
in
my code. It just seems ugly and raises my blood pressure for some
reason.
On 16 March 2014 04:46, Brandon [email protected] wrote:
But the main thing that puzzles me is should I be replacing + with << here?
I read somewhere the performance is better but I really hate seeing << in my
code. It just seems ugly and raises my blood pressure for some reason.
I think this would be much more readable
flash[:success] = “Your payment has completed. Please contact
#{@order.seller.name} (mobile: #{@order.seller.mobile_number}, email:
#{@order.seller.email} )”
Colin
El domingo, 16 de marzo de 2014 09:54:06 UTC+1, Colin L. escribió:
and it
#{@order.seller.name} (mobile: #{@order.seller.mobile_number}, email:
#{@order.seller.email} )"
Colin
That s really odd, I think that writing like: flash[:success] = “Your
payment has completed. Please contact #{@order.seller.name} (mobile:
#{@order.seller.mobile_number}, email:
#{@order.seller.email} )” should interpolate it.
The only rule I know is that double quotes are the ones to use in string
interpolation.
I hope you found the solution.
And please if you find it share it.
The operator << is better to add info into a variable.
For example:
name = “”
name.object_id
=> 70341910843080
name << "Jhon "
name.object_id
=> 70341910843080
name << "Doe "
name.object_id
=> 70341910843080
Note that the object_id is always the same.
It’s not create a new object.
Now, let see this:
name = “”
name.object_id
=> 70341910594080
name += “John”
name.object_id
=> 70341910549640
name += " Doe"
name.object_id
=> 70341910514060
Note that always a new object will be created.
But if you wanna put a String with interpolation into a variable, how
this:
flash[:success] = “Your payment has completed. Please contact #{@
order.seller.name} (mobile: #{@order.seller.mobile_number}, email:
#{@order.seller.email} )”
I’ll do the same way that you, because I lost just a little performance,
but my code would be cleaner.
Or you prefer:
flash[:success] = "Your payment has completed. Please contact "
flash[:success] << @order.seller.name
flash[:success] << "(mobile: "
flash[:success] << @order.seller.mobile_number
flash[:success] << ", email: "
flash[:success] << @order.seller.email
flash[:success] << “)”
flash[:success]
rsrs… Ruby is clean man. Your interpolation is the better way.
flash[:success] = “Your payment has completed. Please contact #{@
order.seller.name} (mobile: #{@order.seller.mobile_number}, email:
#{@order.seller.email} )”