настраиваемые действия для inherited_resources

У меня есть 3 пользовательских действия для моего контроллера, и я надеялся, что каждое из них использует объект ресурса, который дает нам inherited_resources. Итак, в основном, вместо:

def cancel
  @job = resource.cancel!
end

def restart
  @job = resource.restart!
end

def start
  @job = resource.start!
end

Я хочу просто пропустить это:

def cancel
  @job.cancel!
end

def restart
  @job.restart!
end

def start
  @job.start!
end

Проблема с этим в том, что @job выходит на ноль. Итак, я проверил документацию и узнал о пользовательских действиях. Поэтому я добавил это в свой контроллер:

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

но @job по-прежнему равен нулю. Я также пробовал:

actions :all

сказать IR применить ресурс ко всем действиям, и это все еще не работает. Что я делаю неправильно?


person corroded    schedule 08.12.2011    source источник


Ответы (1)


Вы должны обернуть вызов следующим образом:

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

Это приводит к запуску IR, а затем передаче управления вашему блоку (с уже установленным ресурсом).

person AndrewF    schedule 30.12.2011
comment
ах... ну, если это так, то я хорош с resource.cancel... так как это меньше символов, хех. - person corroded; 03.01.2012