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 +.