(Ruby, Rails, Javascript) Управление вложенными моделями с помощью окон javascript и т. Д ...? - PullRequest
1 голос
/ 14 июня 2009

В настоящее время я разрабатываю приложение Rails с 4-мя вложенными моделями (согласно ЭТОТ ПОСТ ). Я подумал об использовании JavaScript для управления ими на одной странице. Это кажется выполнимым (как и многие вещи в Rails), однако, это не рекомендуется.

Тем не менее, я ищу, чтобы управлять через прокси-страниц. В настоящее время структура модели выглядит следующим образом:

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

Моя текущая цель - управлять объектами через «окна» Javascript. Например, страница индекса «Сайты» будет иметь «Управление зданиями» рядом с каждым списком сайтов. После нажатия на ссылку откроется страница индекса «Строительство», в которой будут только существующие здания для этого сайта, а также будет возможность добавлять новые. Тогда, конечно, на каждой странице здания будет «Управление контроллерами», и так далее, и тому подобное для каждого.

Имея это в виду, и прежде чем я похороню себя в разрыве "active_scaffold" и т. Д., Есть ли у кого-нибудь какие-либо рекомендации / предложения для реализации этого типа управления объектами? В основном мой вопрос относится к необходимому Javascript и т. Д., Однако, если у вас есть какие-либо "ошибки", я бы тоже хотел, чтобы вас об этом знали.

Best.

1 Ответ

1 голос
/ 21 августа 2009

Звучит как интересный интерфейс, просто мысль ... вы можете подумать о том, чтобы сделать контроллеры или измерения в виде диалоговых окон, просто чтобы уменьшить беспорядок в пользовательском интерфейсе. Здесь идет:

В ваших маршрутах:

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)

Надеюсь, это поможет!

...