Tying Controller Data to the View
In MVC, the view needs to render any data the controller
provides. That data may come from model logic, the session, or any other
source. Regardless of where the data comes from, in Rails, instance
variables in the controller are available to the view. Let’s try setting a
variable called @welcome_message in the
controller:
class GreetingController < ApplicationController
def index
@welcome_message = "Welcome to your first Rails application"
end
endNow, display the new message in the view by adding a Ruby expression
between the <%= and %> tags. Rails renders the value of the
expression within these tags, just as if the value of the expression had
been printed in place. Here’s a view that prints your welcome message as a
level one heading:
<h1><%= @welcome_message %></h1>
Reload. You'll see the output from the view, with the message you
created in the index method. In Example 1-1, you rendered your view within the
controller. Here, you built an HTML.ERB template.
Your HTML tags provided static structure and style, and your Ruby code
provided dynamic content—in this case, a variable set within the
controller. That’s MVC.
Expressions and Scriptlets
When you’re embedding Ruby code within a view template,
you’ve got two options. Scriptlets are Ruby code
placed between the <% and %> tags. Scriptlets run Ruby code without
printing the results. You will often use a scriptlet to loop through the
elements of a Ruby array, for example. Expressions are Ruby expressions ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access