Sha256: 5d848ca3532ba56113d0cb8cd960aaab08fd47a92b1ff5321550e08128f5f59a
Contents?: true
Size: 1.68 KB
Versions: 13
Compression:
Stored size: 1.68 KB
Contents
# Base class for helper objects inspired by http://railscasts.com/episodes/101-refactoring-out-helper-object # # Use of such classes is indicated when you have: # # * helper methods calling each other, especially if ... # * helper methods are passing around variables (which will become instance variables) # * the same case/if logic in many methods, indicating a requirement for class hierarchy # # Your helper class's methods can just do calculations which are subsituted into # html in the views, or the methods can generate html as well. This is helpful # when the html is conditional on some other object's state. # # You have access to all the helper methods available to the view that creates # the instance. # # Implementing helper classes should inherit from Renderer::Base and the template # instance should be passed as an argument to the constructor. # # # app/helpers/renderer/my_renderer.rb # class MyRenderer < Renderer::Base # ... # end # # # app/views/a_controller/a_view.html.erb # <% renderer = MyRenderer.new(self) %> # must pass in template # ... # <div> # <%= renderer.div_content %> # </div> class UcbRails::Renderer::Base # Holds reference to view template attr_accessor :template # Options to pass to renderer attr_accessor :options # Returns new instance of renderer. The _template_ argument is the view template. def initialize(template, options = {}) self.template = template self.options = options end private # Method missing sends all calls to template instance. This techniuqe # provides access to helper methods available to the template. def method_missing(*args, &block) template.send(*args, &block) end end
Version data entries
13 entries across 13 versions & 1 rubygems