控制器/视图中的模型继承和模型特定代码

时间:2011-09-03 18:49:22

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

我正在使用Rails单表继承与超类内容和一些子类(如文章,评论等)我试图逃脱一个控制器,我已经设置了路由:< / p>

resources :contents
resources :articles, :controller => "contents"
resources :comments, :controller => "contents"

这样,/articles/new会被路由到contents#new,这似乎就是我想要的。

然而,在控制器和视图中,我需要根据我正在处理的实际模型来定制一些功能。为此,我需要确定原始请求的资源,或者找出我正在处理的子类。

在公共控制器中查看params /articles/new给出了{"action"=>"new", "controller"=>"contents"},这显然无法提供我需要的信息。

要么答案非常明显,要么我正在使用模型继承错误。哪一个? :)

1 个答案:

答案 0 :(得分:0)

您可以像这样提取您感兴趣的请求路径部分

path = request.fullpath[%r{^/(articles|comments)/}, 1] # articles or comments

一旦你拥有它,你就可以获得这样的模型类:

model_class = path.classify.constantize # Article or Comment

贝斯茨,

理查德