2010-01-12 6 views
1

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

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

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

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

ответ

3

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

  • Создание новых фотографий :: ThumbnailsController
  • Routing "/ фотографии /: идентификатор/Ленфильм" в этом контроллере (таким образом, мой пример URL будет "/ фотографии/Foo/Ленфильм")
  • Создание действия индекса для этого контроллера (и, вероятно, никаких других действий)
  • Имея действие индекса, произведите частичное, содержащее код элемента списка. (В этот момент может иметь смысл сделать частичный полный вид).
  • Сделайте запрос AJAX на «/ photos /: id/thumbnail», когда я хочу добавить миниатюру в список.

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

+0

Ваши решения кажутся довольно прочными и соответствуют принципам REST. +1 –

+0

Спасибо, я пытался это сделать. Проблема в том, что это похоже на множество проблем для примерно двух тегов HTML: -P Но я пойду с ним, если ничего не придумает. –

+0

«Наличие целого другого контроллера/ресурса для одного частичного/представления кажется немного переборщиком» - согласился, но я сделал это так и для ясности. +1 –

1

Не ответ, но предложение: посмотрите (посмотрите источник), как некоторые другие игроки сделали бесконечный прокрутки, например Bing's image search или 37 Signals Haystack (что, безусловно, и в Rails).

Результаты

(редактирование Craig)

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

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

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

+0

Это одна из вещей, которые я ненавижу в AJAX: пытаясь выяснить, в какой части кода происходит волшебство. :-П –

Смежные вопросы