2010-11-14 65 views
4

我有一個應用程序佈局模板:軌道 - 處理佈局content_for與AJAX

<%= yield(:railed) %> 

爲了處理在正確的軌道(右列300像素)接觸。在actualy DEF SHOW頁我用:

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

我現在遇到的問題是,我的控制器之一,進出口使用AJAX來打DEF展,並注入內容到頁面。由於layout.js響應中沒有使用佈局模板,因此該工作很好,因爲它沒有得到railed內容。

那麼,我可以通過AJAX請求獲得有序的比賽顯示,而不必爲AJAX &非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

這是一個黑客攻擊的一位,但是這是怎麼了我做到了在軌3.1 HAML和jQuery:

show.html.haml:

- if request.xhr? 
    #content_for_sidebar.hidden 
    [email protected]_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(); 
});