2009-08-26 20 views
8

En mis pruebas RSpec, necesito para simular un AJAX solicitud GET a la acción index, y han estado utilizando el código como se describe en los dos documentos rieles y el libro RSpec:Simular una solicitud GET XHR

xhr :get, :index 

Sin embargo, esto siempre falla, ya que la prueba intenta cargar la acción de mostrar (sin ningún parámetro) en lugar de la acción de índice especificada.

La acción del controlador es:

def index  
    @contacts = Contact.all 

    respond_to do |format| 
    format.html 
    format.js { 
     render :update do |page| 
     page.replace_html :contact_search_results, :partial => 'contacts' 
     end 
    } 
    end 
end 

El error que se produce mediante la ejecución de la especificación es (mostrando el: espectáculo de acción utilizada):

ActionView::TemplateError in 'ContactsController as an administrator user when 
showing the index of contacts' as an AJAX request should render results into the 
contact_search_results element' 

contact_url failed to generate from {:action=>"show", :controller=>"contacts", 
:id=>#<Contact id: nil, first_name: nil, ....>} 

¿Alguien sabe cómo puedo simular un AJAX llamar a la acción de índice en las pruebas?

Gracias!

Respuesta

2

En realidad, creo que está malinterpretando el error. En algún momento, Rails intenta llamar al contact_url y los parámetros son incorrectos. Mi sospecha es que de hecho está llamando a la acción de índice que luego hace que el contacto sea parcial. Si estoy en lo cierto, los contactos parciales son la ubicación del problema. Yo recomendaría revisar los contactos parciales por posibles errores. Si aún tiene problemas, publique parcialmente el cuerpo de sus contactos.

0

Está tratando de hacer una URL a un objeto de contacto no persistente. Puede ver eso en el mensaje: :id=>#<Contact id: nil

Cuestiones relacionadas