Мой целевой результат - когда пользователь щелкает ссылку, чтобы всплывающее наложение, содержащее новую страницу, загруженную с сервера с помощью AJAX.
Для этого я использую Наложение прототипа (я использую Prototype для AJAX) для создания диалога, и после того, как диалог создан, я звоню:
new Ajax.Updater("div_inside_the_dialog",
"url_for_the_content",
{method: 'get', requestHeaders:{Accept:'text/javascript'}});
Я также добавил в свой контроллер url_for_the_content:
respond_to do |format|
format.js
format.html
end
Таким образом, при щелчке по ссылке создается диалоговое окно, мой контроллер для url_for_the_content, который видит, что я делаю запрос JavaScript, и возвращает некоторые данные для отображения внутри диалогового окна.
Это работает хорошо, но мне кажется очень странным, что мне пришлось вручную кодировать, что я ищу возвращение JavaScript в заголовке запроса, а затем то, что я возвращаю, на самом деле не JavaScript, это просто куча HTML для диалога.
С другой стороны, я не хочу создавать специальный метод контроллера только для этого, потому что концептуально это не совсем его собственное действие, поскольку оно отображает то же самое, что и существующее действие, просто отформатированное по-другому. Кроме того, мне пришлось бы отключить макеты для него, и я бы никогда не хотел, чтобы пользователи могли просматривать его напрямую, а не в диалоге AJAX.
Может ли кто-нибудь высказать свое мнение о том, как я подхожу ко всему этому процессу, по любой части того, что я делаю?