(Rails) Архитектура многомодельного контроллера и индексного представления ...? - PullRequest
0 голосов
/ 23 июня 2009

В настоящее время я управляю несколькими моделями с одной страницы SITE MANAGER. У меня есть следующие отношения:

Sites -> Buildings -> Meters -> Values

Рядом с каждым элементом «Сайты» у меня есть «Редактировать | Удалить | Добавить здание» Рядом с каждым элементом «Строительство» у меня есть «Редактировать | Удалить | Добавить метр» Рядом с каждым элементом «Meter» у меня есть «Edit | Delete | Add Value» У каждого элемента «Значение» у меня есть «Редактировать | Удалить»

На данный момент у меня есть один Франкенштейновский контроллер под названием «SiteManagerController», который управляет этой страницей. У меня просто есть метод (и соответствующий маршрут в файле маршрутов), например, так:

add_site
add_building_to_site
add_meter_to_building

delete_site
delete_building
delete_meter

Однако меня интересует, существует ли механизм обеспечения качества, с помощью которого можно использовать существующие методы CRUD контроллеров элементов, в то же время имея возможность отображать соответствующий файл RJS для страницы и контроллера «SiteManager»?

Было бы неплохо, если бы я мог как-то перенаправить на исходный контроллер (чтобы не пришлось переписывать все методы вручную), одновременно имея контроль перенаправления rails (не только визуально, но и контекстно) обратно на контроллер "SiteManager" после создания или удаления. Имейте в виду, что я имею в виду не формы, а просто страницу INDEX и несколько ссылок "link_to_remote"

Я вполне возможно задаю неправильный вопрос, поэтому учтите, что ... в любом случае, я открыт для предложений.

Best.

1 Ответ

0 голосов
/ 23 июня 2009

Вы можете абсолютно использовать методы CRUD для существующих контроллеров элементов. Вы можете указать link_to_remote на любой URL, и он вставит 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...