2010-01-17 11 views
6

Sto provando a creare una pagina Web abilitata AJAX utilizzando i binari e jQuery. Il problema che sto incontrando è che quando provo a caricare una vista in un div usando il metodo AJAX di jQuery, mi viene restituito il layout dell'applicazione con la vista. C'è un modo per recuperare i dati della vista solo se si tratta di una richiesta AJAX, ma caricare anche il layout dell'applicazione se non è una richiesta AJAX?Rails ajax request load view html only

Ecco il metodo di controller che io chiamo:

def new 
    @blog = Blog.new 

    respond_to do |format| 
     format.html # Goes to the new.html.erb view. 
     format.xml { render :xml => @blog } 
    end 
end 

Grazie per l'aiuto.

risposta

7

aggiungere questa linea al vostro respond_to blocco:

format.js { render :layout => false } 

Questo dice che per le richieste javascript, non rendano il layout. Ora dovrebbe funzionare sia per le richieste Ajax, sia per i normali collegamenti Web.

8

si deve aggiungere il formato js al blocco respond_to:

format.js do 
    render :update do |page| 
    page.replace_html "id_of_your_div" :partial => "something" 
    end 
end 

o

format.js do 
    render :js => "$('#id_of_your_div').html('#{escape_javascript(render_to_string(:partial => 'something')}');" 
end 

O ancora si potrebbe mettere il codice JavaScript in un file chiamato new.js.erb senza la bisogno del blocco format.js.

vi consiglio di leggere le rotaie guide: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

+0

Grazie! Questa è la risposta corretta alla domanda E a ciò di cui avevo bisogno. – Mosselman

+0

Manca una coma prima di ': partial' nel primo esempio – Sbbs

Problemi correlati