Assuming the route:
resources :users, only: [:index]
And the controller:
class UsersController < ApplicationController
def index
respond_to do |format|
format.html { render }
end
end
end
The view app/users/index.html.erb will be rendered. If the view is:
Hello <strong>World</strong>
The output will be a webpage with the text: "Hello World"
If you want to render a different view, you can use:
render "pages/home"
And the file app/views/pages/home.html.erb will be used instead.
You can pass variables to views using controller instance variables:
class UsersController < ApplicationController
def index
@name = "john"
respond_to do |format|
format.html { render }
end
end
end
And in the file app/views/users/index.html.erb you can use @name:
Hello <strong><%= @name %></strong>
And the output will be: "Hello john"
An important note around the render syntax, you can omit the render syntax entirely, Rails assumes that if you omit it. So:
class UsersController < ApplicationController
def index
respond_to do |format|
format.html { render }
end
end
end
Can be written instead as:
class UsersController < ApplicationController
def index
respond_to do |format|
format.html
end
end
end
Rails is smart enough to figure out that it must render the file app/views/users/index.html.erb.