Sha256: ae0be28c8140d5d5481a715929f51e2d561b7e21a907d859c3f033cd5137aaed

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module Restfulie::Server::ActionView::Helpers
  # Load a partial template to execute in describe
  #
  # For example:
  #
  # Passing the current context to partial in template:
  #
  #  member(@album) do |member, album|
  #    partial('member', binding)
  #  end
  #
  # in partial:
  #
  #  member.links << link(:rel => :artists, :href => album_artists_url(album))
  #
  # Or passing local variables assing
  #
  # collection(@albums) do |collection|
  #   collection.members do |member, album|
  #     partial("member", :locals => {:member => member, :album => album})
  #   end
  # end
  #
  def partial(partial_path, caller_binding = nil)
    template = _pick_partial_template(partial_path)

    # Create a context to assing variables
    if caller_binding.kind_of?(Hash)
      Proc.new do
        extend @restfulie_type_helpers
        context = eval("(class << self; self; end)", binding)
        
        unless caller_binding[:locals].nil?
          caller_binding[:locals].each do |k, v|
            context.send(:define_method, k.to_sym) { v }
          end
        end
        
        partial(partial_path, binding)
      end.call
    else
      eval(template.source, caller_binding, template.path)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
restfulie-0.8.0 lib/restfulie/server/action_view/helpers.rb