Rails基于STI类型的多态视图和动作

时间:2012-10-31 18:46:38

标签: ruby-on-rails ruby

这似乎是一个类似的问题,但答案可能两年后不同:Rails way to render different actions & views based on user type?

我有一个可以有多种类型的STI模型。通常,但并非总是如此,视图将根据类型而不同。同样,控制器动作的逻辑可能因类型而异。我想避免必须根据类型更改if / elsif条件的高维护成本。

我可以想到几种方法可以编写一些辅助函数/模块来使这更容易,但是想知道是否已经存在为此目的而构建的任何宝石。

你的想法很受欢迎。

1 个答案:

答案 0 :(得分:1)

只要在路径文件中声明它们,就可以为不同的STI类型创建单独的控制器。即

Base < ActiveRecord::Base
end

Foo < Base
end

Bar < Base
end


#config/routes.rb
resources :foos
resources :bars

然后,您只需要为foo生成一个控制器,为bar生成一个控制器及其各自的方法/视图。

对于常见元素,您可以使用部分视图和基本模型。 (你也许能够以某种方式使用Base控制器。虽然我不确定)