Rails Syntax Change

New: <%= yield(:title) %>
Old: <%= @title %>

@title is set in a controller, and to separate views from what goes on
in a controller, you shouldn't set a title of an html page in a
controller. The method yield(:title) looks for the value of a title
variable in the view, which can be set like this:

<% provide(:title, "Home") %>

New: "#{base_title} | Home"
Old: @base_title + "| Home"

Those statements do the exact same thing in ruby. The first example
injects a second string into the first string. The second example joins
two strings together--producing a third string. So the second example is
a tiny bit more efficient.

Do you mean “#{base_title} | Home” is more efficient because it doesn’t create a new String object? (You said second one… I am not sure if I got that right.)

(I wonder why I don’t get email notifications when replies are sent… I am pretty sure I clicked “Email updates to me”…)

Derek Lin wrote in post #1075271:

Do you mean "#{base_title} | Home" is more efficient because it doesn't
create a new String object?

It certainly does create a new String object--that's what the quotes do;
they tell Ruby, "Please create a new String object for me. The
difference is that the following:

base_title + "| Home"

...creates two more String objects: "| Home" and another created by +.