我目前正在通过一个SITE MANAGER页面管理多个模型。我有以下关系:
Sites -> Buildings -> Meters -> Values
在每个“网站”项目旁边,我有“编辑|删除|添加建筑物” 在每个“建筑”项目旁边,我有“编辑|删除|添加仪表” 在每个“Meter”项目旁边,我有“编辑|删除|添加值” 在每个“价值”项目旁边,我有“编辑|删除”
此时我有一个名为“SiteManagerController”的frankensteined控制器来管理这个页面。我只是有一个方法(和路由文件中的相应路由),如下所示:
add_site
add_building_to_site
add_meter_to_building
delete_site
delete_building
delete_meter
然而,我想知道的是,是否存在使用现有项目控制器CRUD方法的质量机制,同时能够为“SiteManager”页面和控制器呈现适当的RJS文件?
如果我可以以某种方式路由到原始控制器(以便不必手动重写所有方法),同时还具有rails重定向控件(不仅仅是在视觉上,而是在上下文中)回到“SiteManager”控制器,这将是很好的创建或删除后。请记住,我不处理表单,只是一个INDEX页面和多个“link_to_remote”
我很可能会提出错误的问题,所以请考虑......无论如何,我愿意接受建议。
最佳。
答案 0 :(得分:0)
您绝对可以使用现有的项目控制器CRUD方法。您可以将link_to_remote
指向任何网址,它会插入您指示的html。只要你保留routes.rb
中的默认路由,一切都应该正常。这将使用户保持在SiteManager页面上,但他将在幕后与RESTful路由进行交互。
link_to_remote "Edit", :update => "site_#{site.id}",
:url => site_url(site), :method => :put
link_to_remote "Add Building", :update => "new_building", :url => buildings_url,
:method => :post
SitesController < ApplicationController
def update
@site = Site.find(params[:site_id])
@site.update_attirbutes!(params[:site_id])
render :partial => @site
end
end
BuildingsController < ApplicationController
def create
@building = Building.create(params[:building])
render :partial => @building
end
end