2010-08-21 39 views
23

Estoy atrapado en un problema (aparentemente) simple. En mi event_controller que tienen la acción i_like_it:Renderizar un archivo Javascript diferente en responder a

def i_like_it 
    @event = Event.find(params[:id]) 

    ... # logic 

    respond_to do |format| 
     format.js 
    end 
    end 

En mi caso "i_like_it" se llama con: method => PUT (se trata de una llamada Ajax , "i_like_it.js.erb" será devuelto como un guión y que duraran ser ejecuta en el navegador.)

me gustaría presentar un render Javascript con un nombre diferente (no i_like_it.js.erb), pero no he encontrado ninguna opción en el Rails API documentos.

respond_to do |format| 
    format.js { render ??? } 
end 

Rails puede hacer JavaScript básico con: js opción, pero no quiero que el uso de JavaScript en el controlador.

¿Tiene alguna sugerencia?

Gracias, Alessandro DS

Respuesta

7

Trate render :template => 'your_file_here' en lugar de

Documentación para render describe un par de otras opciones.

42

Si lo hace:

respond_to do |format| 
    format.js { render :action => "different_action" } 
end 

se carga RAILS_ROOT/app/views/su controlador /different_action.js.erb lugar.

El bloque format.js simplemente garantiza que si se trata de una solicitud .js, tiene los encabezados adecuados establecidos de forma predeterminada y busca .js.erb o .js en lugar de .html.erb de forma predeterminada.

También puede usar render: file para representar cualquier archivo arbitrario en el sistema de archivos que tenga JS, o podría usar cualquiera de las otras opciones habituales de render. There are a few of them.

+0

En mi caso tengo que hacer un archivo js de un controlador diferente, entonces render: template => 'mi_archivo' es más apropiado, gracias, Alessandro DS –

+0

y si quiero rendir un my_javascript.js. erb de otro controlador? – zer0uno

+0

¿cómo se llama un archivo desde una carpeta diferente, como una carpeta compartida que no está relacionada con un controlador? ¿dónde comienza la ruta relativa y puedes dar un ejemplo de una (por ejemplo, root/app/views/shared/vote.js.erb)? – ahnbizcad

Cuestiones relacionadas