Estoy actualizando una aplicación de rieles anterior a 3.1. La aplicación funciona bastante bien, pero tengo algunas funciones ajax que necesito actualizar. (Si hace alguna diferencia, estoy usando jquery y coffeescript)Actualización de rieles a 3.1 - cambio del manejo de ajax de "render: update" para responder a
Toda la funcionalidad ajax existente se ha escrito usando render: updates. por ejemplo,
render :update do |page|
page.remove "financial_tran_offset_#{params[:ftof_id]}"
page.replace_html 'details', :partial => 'details', :locals => {:obj => @fire}
end
Creo que la nueva forma preferida de hacerlo es utilizar un responder_a? bloquear para manejar el js, pero no estoy seguro de la mejor manera de manejar estos casos diferentes.
Para el primer caso (el page.remove
) Creo que con la línea de tubería de activos, debería tener un js externo en/app/assets/javascripts/para manejar el lado de Javascript (por ejemplo, la página.remove) pero estoy no estoy seguro de cómo pasar los parámetros al archivo js. Supongo que puede hacer algo como:
respond_to do |format|
format.js {:render :js => {:ftof => params[:ftof_id]}
end
pero no estoy seguro de cómo se puede recoger esto desde dentro del archivo js. ¿Es esta la forma correcta de pasar información a la js? ¿O hay otro método que debería usar?
Para el segundo caso (el page.replace_html
) creo que esto ha sido obsoleto/eliminado de 3.1 (según apidock). Sospecho que esto debería estar usando el archivo js en el directorio app/assets/javascript, pero no estoy seguro de cómo debo hacer la representación parcial y pasar esta información al js.
gracias por cualquier punteros en esta área =)
genial. ¿Hay alguna forma de hacerlo con coffeescript, o está limitado a js solo en el archivo update.js.erb? –
Si realmente desea utilizar CoffeeScript, es posible que pueda, pero el soporte en vistas dinámicas es irregular por lo que puedo decir. (Personalmente prefiero JS.) CoffeeScript para jQuery one-liners es un poco exagerado. '$ ('# id'). append ('content');' to '$ ('# id'). Agregar 'contenido'. No vale la pena la sobrecarga para guardar un conjunto de paréntesis. JQuery es lo suficientemente compacto y simple. Bien podría seguir con eso. – Substantial
¡Gracias por la respuesta detallada! –