Sha256: 91b8b6cddcc989dda5acb4721d9a62a2a322142a43191fe7d9af1e08fadd2e3b

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

module AngularSprinkles
  module Helpers
    module BindFormForHelper

      ##
      # bind_form_for
      #
      # Wraps the form_for helper so that form submission can be bound
      # an Angular service function. Accepts an additional argument which
      # is the name of a service. Two arguments are passed to the service:
      # the object and the Angular representation of the form.
      def bind_form_for(record, submit_callback, options = {}, &block)
        form_name = ObjectKeyWrapper.new('form', JavaScript::NoOp)

        record = [record] if !record.is_a?(Array) # ensures that record will be handled in the same way whether or not it's an array

        html_options = {
          'name' => form_name,
          'ng-submit' => service(submit_callback, *record.map(&:bind), form_name)
        }.merge(options[:html] || {})

        augmented_options = options.merge(url: "", method: "", html: html_options)

        form_for(record.first, augmented_options, &block).gsub('action="" ', '').html_safe
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
angular_sprinkles-0.3.0 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.14 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.13 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.12 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.11 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.10 lib/angular_sprinkles/helpers/bind_form_for_helper.rb
angular_sprinkles-0.2.9 lib/angular_sprinkles/helpers/bind_form_for_helper.rb