Let's require the erb gem and add a new method called render on the ApplicationController class. We're adding it to the base controller class so that all controller classes will inherit it.
require 'erb'
class ApplicationController
  attr_reader :env
  def initialize(env)
    @env = env
  end
  # new method
  def render(view_template)
    erb_template = ERB.new File.read(view_template)
    erb_template.result(binding)
  end
end
The new code does the same thing that we saw in our simplified example earlier. However, there're three important things to note here:
- It reads the string template from a file called - view_template, which we'll learn more about later.
- Then it calls the - bindingmethod to get the binding in the context of the controller class, making all the instance variables available to the binding.
- Finally, it renders the response by calling the - resultmethod on the ERB template and passing the binding.
If this sounds confusing, don't worry. I promise everything will start making sense very soon, especially once you see how we use the render method!