rails - Работа с макетом content_for с помощью AJAX - PullRequest
4 голосов
/ 15 ноября 2010

У меня есть шаблон макета приложения с:

<%= yield(:railed) %>

Для обработки контактов в правой направляющей (правая колонка 300px).На самой странице DEF SHOW я использую:

<%- content_for(:railed) do -%>
HTML STUFF goes here
<%- end -%>

Проблема, с которой я столкнулся сейчас, заключается в том, что для одного из моих контроллеров я использую AJAX, чтобы нажать DEF Show и внедрить содержимое на страницу.Эту работу вполне ожидаемо, поскольку она не получает рельсовое содержимое, так как шаблон макета не используется в ответе format.js.

Так что же я могу использовать для отображения рельсового контекста с помощью AJAXзапрос, и не нужно писать на отдельных страницах для AJAX и Non-AJAX (прямой URL).

Мысли?Я знаю, что гений Rails уже понял это:)

Мой контроллер:

  def show
    @thing = Thing.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.js
    end
  end

show.js.erb:

<%= render :partial =>"thing/show" %>

1 Ответ

1 голос
/ 31 августа 2011

Это что-то вроде хака, но вот как я это сделал в rails 3.1 с haml и jquery:

show.html.haml:

- if request.xhr?
  #content_for_sidebar.hidden
    =@view_flow.get(:sidebar)

ajax_callbacks.js:

$("#nav a[data-remote]").live('ajax:complete', function(status, xhr) {
  $($(this).attr('rel')).html(xhr.responseText);
  $('#sidebar').html($("#content_for_sidebar").html());
  $("#content_for_sidebar").remove();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...