Ruby on Rails и лучшие практики проектирования AJAX - PullRequest
1 голос
/ 05 июля 2011

Я создаю веб-приложение с RoR и хочу реализовать API истории из HTML5.

Допустим, у меня есть контроллер 'Item', представление 'Item_view' и div 'div 'inside' Item_view '.

Когда я динамически загружаю' div '(например, по клику), могу ли я:

  • вызвать контроллер' Item 'и затем выбрать'div ', или
  • вызывает отдельный контроллер, который загружает только' div '?

Первый вариант потребляет те же ресурсы, что и загрузка всей страницы, AJAX здесь бесполезен(право?).Но второй вариант подразумевает, что мне нужен контроллер для каждой части страницы, которую я хочу динамически загружать.Или есть другой способ сделать это?Любой способ фильтрации того, что загружается контроллером в соответствии с типом запроса?Любые советы по лучшей практике?

Спасибо.

1 Ответ

1 голос
/ 05 июля 2011

Я бы назвал контроллер предметов и действие, которое вы обычно вызываете (показать, новый, отредактировать).Поместите код div в часть с именем _item_view.html.erb.

Используя блок response_to с запросом AJAX, вы можете загрузить только то, что вам нужно, вместе с необходимыми объектами, вместо того, чтобы загружать весьHTML-блок действия show / edit / new.Если вам не нужно создавать какие-либо объекты, просто удалите переменную экземпляра @items и присваивание: collection => @items.

Так что, если вы собираетесь показать коллекцию элементов, будет показано следующеепартиал item_view для каждого элемента в коллекции @items и возврат его в JavaScript.

def index
  @items = Item.all
  respond_to do |format|
    format.html {...code...}
    format.js {
      render :layout => false, :partial => 'item_view', :collection => @items
    }
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...