Есть ли функция AJAX, которая может просто получить частичку рельсов? - PullRequest
0 голосов
/ 13 сентября 2010

Мой контроллер используется по ссылкам со страницы результатов поиска, для которых требуется макет, и с самой страницы профиля, для которой не требуется макет. Чего я хотел бы добиться, так это метод единого контроллера show, который способен как рисовать частичное с помощью AJAX со страницы профиля, так и рисовать частичное и макет из результатов поиска.

Самое важное ограничение, которое у меня есть, заключается в том, что я не могу установить dataType: на script. имеет , чтобы быть html. Поэтому я не могу использовать этот элегантный вызов AJAX-скрипта, который рендерит JS без участия format.html контроллера.

tabs_controller.js

def show
  @organization = Organization.find(params[:organization_id])
  @tab = @organization.tabs.find(params[:id])
  respond_to do |format|
    format.html { render :partial => 'tab', :layout => 'myHQpage' }
    format.js
  end
end

Javascript

$.get($(this).attr('href'), null, null, "html");

show.html.haml

= render :partial => 'tab'

Какую функцию AJAX я могу использовать здесь, которая рисует только часть, а не весь макет?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Сохраните настройку dataType «script» и просто добавьте тег-обертку вокруг результатов поиска.Затем используйте функцию jQuery replaceWith для замены содержимого этого тега:

_tag.html.erb:
<div id="search">
  ...
</div>

show.js.erb:
$('#search').replaceWith('<%= escape_javascript(render "tab") %>');
0 голосов
/ 14 сентября 2010

Я не уверен, что действительно понимаю, но это может помочь вам. Вы можете добавить :layout => false в блок format.js.

def show
  @organization = Organization.find(params[:organization_id])
  @tab = @organization.tabs.find(params[:id])
  respond_to do |format|
    format.html { render :partial => 'tab', :layout => 'myHQpage' }
    format.js { render :partial => 'tab', :layout => false }
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...