1

我目前正在开发一个带有 4 个嵌套模型的 Rails 应用程序(根据THIS POST)。我考虑过使用 javascript 在一个页面上管理它们。它看起来是可行的(就像 Rails 中的许多事情一样),但是并不强烈推荐它。

也就是说,我希望通过代理页面进行管理。目前模型结构如下:

Sites 'has_many' Buildings 'has_many' Controllers 'has_many' Measurements

我目前的目标是通过 Javascript“窗口”管理项目。例如,“站点”索引页面将在每个站点列表旁边有“管理建筑物”。单击该链接将打开一个“建筑物”索引页面,其中仅包含该站点的现有建筑物以及添加新建筑物的能力。然后,当然,每个建筑页面都会有“管理控制器”,依此类推。

考虑到这一点,在我埋头撕毁“active_scaffold”等之前,是否有人对实施这种类型的对象管理有任何建议/建议?我的问题主要与必要的 Javascript 等有关,但是,如果您有任何“陷阱”,我当然也希望得到注意。

最好的。

4

1 回答 1

1

听起来像是一个有趣的界面,只是一个想法……您可能想考虑将控制器或测量值放入对话框视图中,以减少 UI 混乱。开始:

在您的路线中:

map.resources :sites do |site|
  site.resources :buildings do |building|
    building.resources :controllers do |controller|
      controller.resources :measurements
    end
  end
end

您可能希望分解前面的嵌套资源以降低复杂性。

现场视图

(为简洁起见,用 HAML 编写):

%ul#sites{:style => 'float:left'}
  -@sites.each do |s|      
    %li= link_to s.name, site_buildings_path(s)

%ul#buildings
  %li click on a site to view buildings for that site

 

网站 JavaScript (jquery):

$('ul#site > li a').live('click', function(){
  link = $(this).attr('href');
  $.get(link, function(data, textStatus){
    $('#buildings').empty().append(data)
  });
);

 

提交上述 $.get 请求后返回的建筑物部分:

-@buildings.each do |bldg|
  %li= link_to bldg.name, building_controllers_path(bldg)

希望这可以帮助!

于 2009-08-21T03:59:32.213 回答