Какой самый Rails-у способ вернуть другой HTML в AJAX? - PullRequest
1 голос
/ 29 декабря 2010

У меня есть окно поиска на моем сайте, которое обычно работает через AJAX.Результаты возвращаются с очень небольшой разметкой и помещаются в существующий div.

Однако, возможно, что люди могут выполнять поиск с помощью запросов обычной страницы.Например, в адресной строке Google Chrome введите stackoverflow.com и нажмите вкладку.Google обнаружил, что у SO есть окно поиска, и Chrome теперь будет использовать его для поиска.

То же самое может случиться на нашем сайте.В этом случае я хотел бы ответить полной HTML-страницей, а не фрагментом.

Я знаю, что контроллеры Rails могут использовать respond_to, но, насколько я понимаю, это означает, «какой тип контента сделалпользователь спрашивает - html? xml? json? "В этом случае для обоих запросов требуется HTML, только разное его количество.

Существует ли канонический способ Rails для дифференциации ответов с одинаковым типом контента? Если нет, может ли кто-нибудь предложить хорошийpattern?

Обновление

Это то, что я сейчас делаю в методе search моего контроллера справки, который по умолчанию layout false.(Я не изменяю это, потому что это правильно для других методов на контроллере.)

# All non-AJAX searches should get a layout
unless request.xhr?
  render :search, :layout => 'search' 
end

1 Ответ

2 голосов
/ 29 декабря 2010

Я полагаю, что вы можете просто спросить сам запрос, если это ajaxy, и ответить соответствующим образом (хотя я сам никогда этого не делал):

if request.xhr?

  ...
...