Class: RespondForHelper::Respond

Inherits:
Object
  • Object
show all
Defined in:
lib/respond_for_helper/respond.rb

Instance Method Summary collapse

Constructor Details

#initialize(controller, item, options) ⇒ Respond

Returns a new instance of Respond.



5
6
7
8
9
10
11
12
# File 'lib/respond_for_helper/respond.rb', line 5

def initialize(controller, item, options)
  @controller = controller
  @item = item
  @options = options

  @success = check_success
  @callbacks = {}
end

Instance Method Details

#after_failure(&block) ⇒ Object



43
44
45
46
# File 'lib/respond_for_helper/respond.rb', line 43

def after_failure(&block)
  @callbacks[:after_failure] ||= []
  @callbacks[:after_failure] << block
end

#after_success(&block) ⇒ Object



38
39
40
41
# File 'lib/respond_for_helper/respond.rb', line 38

def after_success(&block)
  @callbacks[:after_success] ||= []
  @callbacks[:after_success] << block
end

#before_failure(&block) ⇒ Object



33
34
35
36
# File 'lib/respond_for_helper/respond.rb', line 33

def before_failure(&block)
  @callbacks[:before_failure] ||= []
  @callbacks[:before_failure] << block
end

#before_success(&block) ⇒ Object



28
29
30
31
# File 'lib/respond_for_helper/respond.rb', line 28

def before_success(&block)
  @callbacks[:before_success] ||= []
  @callbacks[:before_success] << block
end

#check_successObject



14
15
16
17
18
19
20
21
22
# File 'lib/respond_for_helper/respond.rb', line 14

def check_success
  if  @options.key?(:success)
    @options[:success]
  elsif @controller.request.get?
    true
  else
    Array(@item).all? { |item| item.errors.blank? }
  end
end

#formattersObject



72
73
74
75
76
# File 'lib/respond_for_helper/respond.rb', line 72

def formatters
  Lookups::Format.new(@controller, @options).call.map do |_, klass|
    klass.new(@controller, @item, @success, @options)
  end
end

#run_after_callbacksObject



56
57
58
59
60
61
62
# File 'lib/respond_for_helper/respond.rb', line 56

def run_after_callbacks
  if success?
    run_callbacks_for(:after_success)
  else
    run_callbacks_for(:after_failure)
  end
end

#run_before_callbacksObject



48
49
50
51
52
53
54
# File 'lib/respond_for_helper/respond.rb', line 48

def run_before_callbacks
  if success?
    run_callbacks_for(:before_success)
  else
    run_callbacks_for(:before_failure)
  end
end

#run_callbacks_for(name) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/respond_for_helper/respond.rb', line 64

def run_callbacks_for(name)
  if @callbacks[name]
    @callbacks[name].each do |callback|
      callback.call
    end
  end
end

#success?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/respond_for_helper/respond.rb', line 24

def success?
  @success
end