2010-01-17 38 views
6

Estoy tratando de crear una página web habilitada para AJAX utilizando rails y jQuery. El problema con el que me estoy encontrando es que cuando intento cargar una vista en un div usando el método AJAX de jQuery, obtengo el diseño de mi aplicación devuelto con la vista. ¿Hay alguna manera de recuperar solo los datos de la vista si se trata de una solicitud de AJAX, pero también cargar el diseño de mi aplicación si no es una solicitud de AJAX?Rails ajax request load view html only

Aquí está el método de controladores que estoy llamando:

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 

Gracias por la ayuda.

Respuesta

7

añadir esta línea a su bloque respond_to:

format.js { render :layout => false } 

Esto dice que para las solicitudes de JavaScript, no hagan al diseño. Ahora debería funcionar tanto para solicitudes ajax como para enlaces web regulares.

8

hay que añadir el formato js a su bloque 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 incluso se puede poner el código JavaScript en un archivo llamado new.js.erb sin el necesidad del bloque format.js.

recomiendo que lea las guías de carriles: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

+0

Gracias! Esta es la respuesta adecuada a la pregunta Y a lo que necesitaba. – Mosselman

+0

Te falta un coma antes de ': partial' en el primer ejemplo – Sbbs