我想这样做:
namespace :user do
namespace :builder do
resource :general_info, only: [:edit, :update]
resource :biography, only: [:edit, :update]
end
root to: 'profiles#edit_biography'
end
这样我就可以获得那些漂亮的RESTful控制器:
general_info_controller
biography_controller
但创建虚拟builder
模型可能是个坏主意。
没有它,这些控制器会出错:
ActiveRecord::Associations::Builder::BiographiesController
答案 0 :(得分:0)
模型只能由控制器的实现访问,如果控制器设置像@mymodel这样的变量,则可选择访问该模型。宁静来自行为,这是控制器方法的接口:索引,推送,拉动,创建等,无论你想要什么。路由机制非常强大和灵活,您可以自己重新创建“资源”路由的任何便利。
namespace :user do
namespace :builder do
get "edit" => "somecontroller#edit"
......有点事。由您决定如何实施编辑实现以及是否需要任何模型取决于您。您还可以控制使用渲染显示的视图。
是的,这违反了rails约定,但是,它们只是在适用时才适用的约定。并非所有问题都符合所有默认值。
请参阅http://guides.rubyonrails.org/routing.html
通常,资源具有映射到数据库的ID。他们会有像
这样的路线get ":id/edit" => "resourcecontroller#edit"
您的问题需要在多大程度上复制模型资源路径尚不清楚。
答案 1 :(得分:-1)
在我看来,最好的方法是使用模型。我建议你这本书
使用Ruby和Rails进行面向服务的设计(Addison-Wesley专业Ruby系列)[平装] http://www.amazon.com/Service-Oriented-Design-Rails-Addison-Wesley-Professional/dp/0321659368
如果您正在使用RESTful with Database,最佳做法是使用Model来更好地控制数据。