rails - Работа с макетом content_for с помощью AJAX
У меня есть шаблон макета приложения с:
<%= 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 ответ
Это что-то вроде хака, но вот как я это сделал в 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();
});