2014-01-25 47 views
0

REST风格的控制器我想这样做:没有模型

namespace :user do 

    namespace :builder do 
    resource :general_info, only: [:edit, :update] 
    resource :biography, only: [:edit, :update] 
    end 

    root to: 'profiles#edit_biography' 
end 

所以,我可以得到这些漂亮的REST风格的控制器:

general_info_controller 
biography_controller 

但可能坏主意来创建虚拟builder模型。

没有它这些控制器给出一个错误:

ActiveRecord::Associations::Builder::BiographiesController 

回答

0

该模型仅由控制器执行访问和任选的视图,如果控制器将这样的变量等@mymodel。宁静来自控制器方法的接口行为:索引,推,拉,创建等等,无论你想要什么。路由机制非常强大和灵活,您可以自己重新创建“资源”路由的任何便利。

namespace :user do 
    namespace :builder do 
     get "edit" => "somecontroller#edit" 

......种类的东西。您决定如何实现编辑实现以及是否需要任何模型取决于您。您还可以控制使用渲染显示的视图。

是的,这违反了轨道约定,但是它们只是适用的惯例。并非每个问题都适合所有的默认设置。

http://guides.rubyonrails.org/routing.html

通常有资源映射到一个数据库ID。他们会定义航线像

get ":id/edit" => "resourcecontroller#edit" 

目前尚不清楚你需要通过你的问题复制的模型资源路径的程度。

+0

查看我对你的帖子的评论。 REST是一个http约定,并且没有规定具体的实现或模式,当然也不需要Rails或任何Rails特定的约定。 REST是一种行为,在Rails中,您在控制器中提供行为。是的,通常会将一些行为委托给模型,但这不是必需的。 –