1

I have 3 custom actions for my controller and was hoping that each of these use the resource object that inherited_resources gives us. So basically, instead of:

def cancel
  @job = resource.cancel!
end

def restart
  @job = resource.restart!
end

def start
  @job = resource.start!
end

I want to just skip that by:

def cancel
  @job.cancel!
end

def restart
  @job.restart!
end

def start
  @job.start!
end

Problem with this is @job comes out nil. So I checked the documentation and found out about custom actions. So I added this to my controller:

custom_actions :resource => [:cancel, :start, :restart]

but @job still is nil. I also tried:

actions :all

to tell IR to apply resource to all actions and it still doesn't work. What am I doing wrong?

corroded
  • 21,406
  • 19
  • 83
  • 132

1 Answers1

4

You have to wrap the call like this:

def cancel
  cancel! do
    @job.cancel!
  end
end

This causes IR to run and then yield control to your block (with the resource already set).

AndrewF
  • 2,517
  • 1
  • 16
  • 11