Ruby on rails 3 Rails——单表继承和路由

Ruby on rails 3 Rails——单表继承和路由,ruby-on-rails-3,routing,single-table-inheritance,Ruby On Rails 3,Routing,Single Table Inheritance,我实现了单表继承,但在路由方面遇到了一些问题。我有两个类,Gamma和Beta,它们都继承自Alpha。我知道,如果我想使用Alpha作为控制器,而不是Beta和Gamma的单独控制器,我可以按照说明为另一个控制器设置资源默认值 但是,我想做的是让一些方法由中央Alpha控制器处理(例如编辑和更新),而其他方法由子类Beta和Gamma控制器处理。如何指定哪些方法应指向Alpha控制器,哪些方法仍由Beta和Gamma处理?对控制器使用继承。在AlphaController类中实现编辑和更新功能

我实现了单表继承,但在路由方面遇到了一些问题。我有两个类,Gamma和Beta,它们都继承自Alpha。我知道,如果我想使用Alpha作为控制器,而不是Beta和Gamma的单独控制器,我可以按照说明为另一个控制器设置资源默认值


但是,我想做的是让一些方法由中央Alpha控制器处理(例如编辑和更新),而其他方法由子类Beta和Gamma控制器处理。如何指定哪些方法应指向Alpha控制器,哪些方法仍由Beta和Gamma处理?

对控制器使用继承。在
AlphaController
类中实现编辑和更新功能,然后从
BetaController
GammaController
类中的该类继承,然后在这些类中实现其他功能

class AlphaController < ActionController::Base

   def edit
      ...
   end

   def update
      ...
   end

end

class BetaController < AlphaController

   def index
      ...
   end

end
class AlphaController
请注意,这将使您的URL…/beta/编辑和…/beta/更新

您只希望将views/alpha/edit.html.erb用作部分视图,然后在beta/gamma视图中将alpha视图页面作为部分视图呈现


请记住,即使将对象存储在一个表Alpha中,模型中仍有两个类Beta和Gamma,您是否要求地址为../alpha/edit,或者可以是../beta/edit和../gamma/edit?我想理想情况下,我希望所有这些都能工作,但指向alpha控制器中的编辑方法。这是使用
resources:betas,:controller=>alphas修改路由文件的补充吗
等。或者我不触摸我的路线文件吗?你不需要触摸你的路线文件。BetaController将从AlphaController继承编辑或更新的实现,这样当访问…/beta/edit时,就好像您已经为BetaController定义了编辑功能。好的,但是如果我在views/alphas/edit.html.erb中有一个视图,我希望为beta和gamma呈现该视图该怎么办?有没有办法在beta和gamma视图中创建一个文件来显式呈现alpha视图页面呢?@Kvass如果您使用的是rails 3.1,我使用的是3.0.7,它是rails 2 v吗。rails 3区别还是3 v 3.1区别?