多个资源的相同控制器/视图

时间:2011-08-19 15:26:57

标签: ruby-on-rails ruby-on-rails-3 metaprogramming

我有一个用Rails编写的工作流应用程序,并且有许多提示,用户将通过这些提示。当这些提示/手动动作“继续”时,相对于工作流模型存储时间戳。

代码看起来像这样

class Workflow < ActiveRecord::Base

end

class OpenBook < ActiveRecord::Base
  belongs_to :workflow, :polymorphic => true
end

class ReadFirstPage < 
  belongs_to :workflow, :polymorphic => true
end

目前每个工作流程项目(OpenBook)并在视图中吐出一些文本(在模型中设置)和向前/向后按钮。这些工作项的控制器也做类似的事情(新的,完成的,编辑的,继续的,倒带的)。

理想情况下,我想使用相同的控制器和视图,只需更改模型即可。你可以用路线做些什么吗?

resources :open_books, :controller => "workflow_item"

我不确定如何在控制器中获得正确的作业。

或者我这样做完全错了,我应该使用帮手?

1 个答案:

答案 0 :(得分:1)

对于从公共父级继承的每种特定对象类型,您可能更容易使用一系列控制器。这样,大多数重复都可以在基类中,只在子类中表达差异。

为确保正确呈现模板,您可能需要指定模板的完整路径,否则它将查找自定义版本:

 def index
   # ...
   render(:template => 'parent/index')
 end

通常这是多余的,但在您的情况下,您可能需要它,或者它将默认显示不存在的子模板。

相关问题