2011-12-08 30 views
0

我有3个自定义操作为我的控制器,并希望它们中的每一个使用资源对象inherited_resources给我们。所以基本上,而不是:自定义动作为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将资源应用到所有操作,但它仍然不起作用。我究竟做错了什么?

回答

3

您必须包装通话这样的:

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

这将导致IR运行,然后将控制让给你的块(与已设置的资源)。

+1

啊..好的,如果这种情况很好,用resource.cancel ...因为这是更少的字符heh。 – corroded