Восхитительно получать частичное содержимое HTML через AJAX в Rails - PullRequest
1 голос
/ 12 января 2010

В моем приложении Rails у меня есть модель под названием «Фото» и PhotosController. Как и следовало ожидать, я RESTful перенаправил URL-адреса таким образом, чтобы URL «/ photos» возвращал список всех фотографий, отображаемых в HTML-формате (в виде миниатюр), а «/ photos / foo» возвращает представление фотографии в формате HTML. с friendly_id из "foo". (Я также делаю XML, JSON и двоичные представления, но они здесь не актуальны.)

Я хочу, чтобы на странице списка отображалось подмножество миниатюр фотографий при первоначальной загрузке, а затем динамически добавлять дополнительные миниатюры в мой список с помощью AJAX (в частности, jQuery). У меня уже есть HTML, который отображает отдельный элемент списка фотографий (в основном <li><img>) в представлении фотографий / указателя. Поскольку jQuery может внедрять HTML-код непосредственно в DOM , я полагаю, что лучше всего извлечь код элемента списка в часть, а затем загрузить эту часть через AJAX в список.

Мой вопрос: каков наилучший способ вывести HTML из партиала в DOM?

(У меня уже есть идея для реализации; я опубликую ее как ответ, чтобы разрешить соответствующее голосование и комментирование).

Ответы [ 2 ]

3 голосов
/ 12 января 2010

Я полагаю, что наиболее RESTful способ - это сделать представление / представление элемента списка фотографии подресурсом фотографии. Это будет включать:

  • Создание новой фотографии :: ThumbnailsController
  • Маршрутизация "/ photos /: id / thumbnail" на этот контроллер (таким образом, мой пример URL будет "/ photos / foo / thumbnail")
  • Создание действия индекса для этого контроллера (и, вероятно, никаких других действий)
  • При наличии действия index отображается часть, содержащая код элемента списка. (На этом этапе может иметь смысл сделать частичное полное представление).
  • Сделайте AJAX вызов "/ photos /: id / thumbnail", когда я хотел добавить миниатюру в список.

Наличие целого другого контроллера / ресурса для одного частичного / представления кажется немного излишним. Есть ли лучший способ?

1 голос
/ 12 января 2010

Не ответ, а предложение: посмотрите (посмотрите источник), как некоторые другие игроки сделали бесконечный свиток, как Поиск изображений Бинга или 37 Сигнал Стог сена (что, безусловно, в Рельсы тоже).

Результаты

(отредактировано Крейгом)

HayStack звонит на "/ lists.js" . Это означает, что они, вероятно, используют другой формат Rails в своем вызове responseds_to. Я думал об этом, но мне это не очень нравится, потому что:

  • Это зависит от наличия формата (в данном случае js) в URL, который не используется для каких-либо других целей (и никогда не будет).
  • Работа JavaScript зависит от JavaScript (и, соответственно, от дурака JS / HTML). Я бы предпочел использовать чистый HTML для согласованности, возможности повторного использования и кэширования.

Бесконечный поиск Бинга был минимизирован, поэтому я не тратил слишком много времени на его выяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...