我有一个用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"
我不确定如何在控制器中获得正确的作业。
或者我这样做完全错了,我应该使用帮手?
答案 0 :(得分:1)
对于从公共父级继承的每种特定对象类型,您可能更容易使用一系列控制器。这样,大多数重复都可以在基类中,只在子类中表达差异。
为确保正确呈现模板,您可能需要指定模板的完整路径,否则它将查找自定义版本:
def index
# ...
render(:template => 'parent/index')
end
通常这是多余的,但在您的情况下,您可能需要它,或者它将默认显示不存在的子模板。