我正在使用Rails单表继承与超类内容和一些子类(如文章,评论等)我试图逃脱一个控制器,我已经设置了路由:< / p>
resources :contents
resources :articles, :controller => "contents"
resources :comments, :controller => "contents"
这样,/articles/new
会被路由到contents#new
,这似乎就是我想要的。
然而,在控制器和视图中,我需要根据我正在处理的实际模型来定制一些功能。为此,我需要确定原始请求的资源,或者找出我正在处理的子类。
在公共控制器中查看params
/articles/new
给出了{"action"=>"new", "controller"=>"contents"}
,这显然无法提供我需要的信息。
要么答案非常明显,要么我正在使用模型继承错误。哪一个? :)
答案 0 :(得分:0)
您可以像这样提取您感兴趣的请求路径部分
path = request.fullpath[%r{^/(articles|comments)/}, 1] # articles or comments
一旦你拥有它,你就可以获得这样的模型类:
model_class = path.classify.constantize # Article or Comment
贝斯茨,
理查德