class Markaby::Rails::RailsBuilder::FormHelperProxy

This is used for the block variable given to form_for. Typically, an erb template looks as so:

<% form_for :foo do |f|
  <%= f.text_field :bar %>
<% end %>

form_for adds the form tag to the input stream, and assumes that later the user will append the <input> tag to the input stream himself (in erb, this is done with the <%= %> tags).

We could do the following in Markaby:

form_for :foo do |f|
  text f.text_field(:bar)
end

But this is ugly. This is prettier:

form_for :foo do |f|
  f.text_field :bar
end

Public Class Methods

new(view, proxied_object) click to toggle source
# File lib/markaby/rails/rails_builder.rb, line 56
def initialize(view, proxied_object)
  @view           = view
  @proxied_object = proxied_object
end

Public Instance Methods

respond_to?(sym, include_private = false) click to toggle source
Calls superclass method
# File lib/markaby/rails/rails_builder.rb, line 61
def respond_to?(sym, include_private = false)
  @proxied_object.respond_to?(sym, include_private) || super
end

Private Instance Methods

__template__() click to toggle source
# File lib/markaby/rails/rails_builder.rb, line 68
def __template__
  @view.instance_variable_get("@_last_render")
end
method_missing(sym, *args, &block) click to toggle source
# File lib/markaby/rails/rails_builder.rb, line 77
def method_missing(sym, *args, &block)
  result = @proxied_object.__send__(sym, *args, &block)

  # a markaby template may call render :partial with the form proxy helper.
  # we only want to manually concat _if_ we are in a markaby template (not, say, erb)
  if __template__.extension == "mab"
    @view.concat(result)
  end

  result
end