Sha256: ca3e0413da3530a96a847e95e220bb30425acbe598f8c35970e6a331a5ccf3d0

Contents?: true

Size: 1.67 KB

Versions: 21

Compression:

Stored size: 1.67 KB

Contents

module ExpressTemplates
  module Components
    module Forms
      class ExpressForm < Container
        include ExpressTemplates::Components::Capabilities::Resourceful

        tag :form

        has_option :method, 'The form method', default: 'POST', attribute: true #, options: ['PUT', 'POST', 'GET', 'DELETE']
        has_option :action, 'The form action containing the resource path or url.'
        has_option :on_success, 'Pass a form value indicating where to go on a successful submission.'
        has_option :on_failure, 'Pass a form value indicating where to go on a failed submission.'
        has_option :enctype, 'The enctype attribute specifies how the form-data should be encoded when submitting it to the server.'

        prepends -> {
          div(style: 'display:none') {
            add_child helpers.utf8_enforcer_tag
            add_child helpers.send(:method_tag, resource.persisted? ? :put : :post)
            add_child helpers.send(:token_tag)
            hidden_field_tag :on_success, config[:on_success] if config[:on_success]
            hidden_field_tag :on_failure, config[:on_failure] if config[:on_failure]
          }
        }

        before_build -> {
          set_attribute(:id, form_id)
          set_attribute(:action, form_action)
          set_attribute(:enctype, form_enctype) if form_enctype
          add_class(config[:id])
        }

        def form_id
          [config[:id], resource.try(:id)].compact.join('_')
        end

        def form_action
          config[:action] || (resource.try(:persisted?) ? resource_path(resource) : collection_path)
        end

        def form_enctype
          config[:enctype]
        end

      end
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
express_templates-0.11.4 lib/express_templates/components/forms/express_form.rb
express_admin-1.7.5 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.7.4 vendor/gems/express_templates/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.7.3 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.7.2 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.7.1 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.13 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.12 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.11 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.10 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.9 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.8 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.7 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_templates-0.11.3 lib/express_templates/components/forms/express_form.rb
express_admin-1.6.4 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_templates-0.11.2 lib/express_templates/components/forms/express_form.rb
express_admin-1.6.3 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_templates-0.11.1 lib/express_templates/components/forms/express_form.rb
express_admin-1.6.2 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb
express_admin-1.6.1 vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb