Class: AreYouSure::ConfirmFormBuilder

Inherits:
BaseFormBuilder
  • Object
show all
Defined in:
lib/are_you_sure/form_builders/confirm_form_builder.rb

Instance Method Summary collapse

Methods inherited from BaseFormBuilder

#confirmed

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



29
30
31
32
33
# File 'lib/are_you_sure/form_builders/confirm_form_builder.rb', line 29

def method_missing(method, *args, &block)
  do_if_respond_to_original_method(method) do |original_method|
    send(:confirm_field, original_method, *args)
  end
end

Instance Method Details

#cancel(value = nil, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/are_you_sure/form_builders/confirm_form_builder.rb', line 20

def cancel(value=nil, options={})
  cancel_path = options.delete(:to) || @template.polymorphic_path(@object, action: @object.persisted? ? :edit : :new)
  @template.link_to(
    value || I18n.t('are_you_sure.helpers.cancel', default: 'Cancel'),
    cancel_path,
    options
  )
end

#confirm_field(original_field, method, *options) ⇒ Object



9
10
11
12
13
# File 'lib/are_you_sure/form_builders/confirm_form_builder.rb', line 9

def confirm_field(original_field, method, *options)
  field_value = fetch_field_value(original_field, method, *options)
  @template.(:p, field_value) +
  @template.hidden_field(@object_name, method)
end

#confirmation(options = {}) ⇒ Object



4
5
6
7
# File 'lib/are_you_sure/form_builders/confirm_form_builder.rb', line 4

def confirmation(options={})
  confirmed(true) +
  @template.(:p, options[:message] || I18n.t('are_you_sure.confirmation_message', default: 'Are you sure?'))
end

#submit_or_confirm(options = {}) ⇒ Object



15
16
17
18
# File 'lib/are_you_sure/form_builders/confirm_form_builder.rb', line 15

def submit_or_confirm(options={})
  values = [:create, :update, :confirm].inject([]) {|r,k| r << options.delete(k) }
  submit @object.persisted? ? values[1] : values[0], options
end