inherited_resources的自定义操作

时间:2011-12-08 10:27:37

标签: ruby-on-rails-3 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将资源应用于所有操作,但仍然无效。我做错了什么?

1 个答案:

答案 0 :(得分:3)

你必须像这样打包电话:

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

这会导致IR运行,然后对您的块进行控制(资源已经设置)。