2010-01-17 19 views
6

Ich versuche, eine AJAX-fähige Webseite mit Rails und jQuery zu machen. Das Problem, auf das ich gestoßen bin, ist, dass, wenn ich versuche, eine Ansicht in ein Div mit jQuery's AJAX-Methode zu laden, bekomme ich mein Anwendungslayout mit der Ansicht zurückgegeben. Gibt es eine Möglichkeit, nur die Ansichtsdaten zu erhalten, wenn es eine AJAX-Anfrage ist, aber auch mein Anwendungslayout zu laden, wenn es keine AJAX-Anfrage ist?Rails Ajax Anfrage laden Ansicht html nur

Hier ist die Controller-Methode, die ich anrufen bin:

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 

Danke für die Hilfe.

Antwort

7

folgende Zeile zu respond_to Block hinzufügen:

format.js { render :layout => false } 

Diese besagt, dass für Javascript-Anfragen, setzen Sie das Layout nicht machen. Jetzt sollte es sowohl für Ajax-Anfragen als auch für normale Web-Links funktionieren.

8

Sie haben die js-Format auf Ihren respond_to Block hinzuzufügen:

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

oder

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

Oder sogar könnten Sie den Javascript-Code in einem new.js.erb ohne die aufgerufene Datei setzen Notwendigkeit des format.js Blocks.

Ich empfehle Ihnen, die Schienen zu lesen: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

+0

Vielen Dank! Dies ist die richtige Antwort auf die Frage und was ich brauchte. – Mosselman

+0

Ihnen fehlt ein Koma vor ': partiell' im ersten Beispiel – Sbbs