module Draper::DecoratesAssigned
Public Instance Methods
decorates_assigned(*variables)
click to toggle source
@overload decorates_assigned
(*variables, options = {})
Defines a helper method to access decorated instance variables. @example # app/controllers/articles_controller.rb class ArticlesController < ApplicationController decorates_assigned :article def show @article = Article.find(params[:id]) end end # app/views/articles/show.html.erb <%= article.decorated_title %> @param [Symbols*] variables names of the instance variables to decorate (without the `@`). @param [Hash] options @option options [Decorator, CollectionDecorator] :with (nil) decorator class to use. If nil, it is inferred from the instance variable. @option options [Hash, #call] :context extra data to be stored in the decorator. If a Proc is given, it will be passed the controller and should return a new context hash.
# File lib/draper/decorates_assigned.rb, line 28 def decorates_assigned(*variables) factory = Draper::Factory.new(variables.extract_options!) variables.each do |variable| undecorated = "@#{variable}" decorated = "@decorated_#{variable}" define_method variable do return instance_variable_get(decorated) if instance_variable_defined?(decorated) instance_variable_set decorated, factory.decorate(instance_variable_get(undecorated), context_args: self) end helper_method variable end end