Veamos, estoy desarrollando mi aplicación y me dispongo a terminar de
iterar una de las acciones que he hecho (en otro post lo he explicado).
Mi duda es: ¿Cuál es la forma más correcta para desarollar con JQuery y
Rails JavaScript no intrusivo?
Teniendo en cuenta que tengo las siguientes vistas:
plantilla.html.haml:
= div_flash(flash[:error])
form_for :cambio, :url => cambiar_club_path(@club) do |f|
%h1#equipo= "Listado de Jugadores del " + h(@club.nombre)
%h2#titulares Titulares
=render_partial(‘jugadores/listado’, @titulares)
%h2#suplentes Suplentes
=render_partial(‘jugadores/listado’, @suplentes)
%h2#no_convocados No convocados
=render_partial(‘jugadores/listado’, @no_convocados)
=f.submit ‘Cambiar’
for jugador in listado
%tr.jugador
%th{:scope => “row”}= jugador.posicion
%td= h jugador.nombre
%td= h jugador.apellidos
%td= h jugador.velocidad
%td= h jugador.resistencia
%td= h jugador.regate
%td= h jugador.robo
%td= h jugador.pase
%td= h jugador.tiro
%td= h jugador.portero
%td= h jugador.calidad
%td= h jugador.edad
%td= h jugador.sueldo
%td= h jugador.clausula
%td.selector= radio_button(“jugador”, “cambio1”, jugador.id)
%td.selector= radio_button(“jugador”, “cambio2”, jugador.id)
%br
Y en el fichero application.js he hecho lo siguiente:
Lo único que se me ocurre es que en lugar de meter ese churro de JS,
que es bastante especÃfico de esa vista, en un fichero js lo metas con
un content_for en la vista correpondiente.
Así que solo te quedaría montar una estructura /
javascript/“controlador”/“accion”.js
Con esto no solo lo tendrás estructurado sino que solo cargarás el JS
necesario para cada vista, y si hay código que sea general para todas
las vistas pues al aplication.js
No se si me he explicado muy bien pero espero que la idea se entienda,
cualquier duda ya sabes.
Lo único que se me ocurre es que en lugar de meter ese churro de JS,
que es bastante especÃfico de esa vista, en un fichero js lo metas con
un content_for en la vista correpondiente.
As� que solo te quedar�a montar una estructura /
javascript/“controlador”/“accion”.js
Con esto no solo lo tendr�s estructurado sino que solo cargar�s el JS
necesario para cada vista, y si hay c�digo que sea general para todas
las vistas pues al aplication.js
No se si me he explicado muy bien pero espero que la idea se entienda,
cualquier duda ya sabes.
Si pudieras extenderte un poco más, me habrÃas ayudado de una forma
increÃble ;).
respond_to do |format|
format.html # index.html.erb
format.js do
render :update do |page|
#page.alert "alert message"
page.replace_html 'load_content', :partial => "series"
end
end
end
Tienes que ponerlo dentro del y lo que hace, como ya he dicho
antes, es cargarte el js que definas para cada página, poniendo los
*.js al estilo de las vistas de la aplicación royo /public/
javascripts/“controller”/“action”.js
Si aun y con esto no lo entiendes yo no se explicarlo mejor
Tienes que ponerlo dentro del y lo que hace, como ya he dicho
antes, es cargarte el js que definas para cada p�gina, poniendo los
*.js al estilo de las vistas de la aplicaci�n royo /public/
javascripts/“controller”/“action”.js
Si aun y con esto no lo entiendes yo no se explicarlo mejor
Ya, ya te he entendido ;). De todas formas he estado mirando y remirando
y he encontrado un plugin que hace lo mismo que tu pero de modo más
elegante. Por si lo quieres:
jquery+livequery+low pro, te permite convertir links html y formularios
html
normales en formularios ajax, pero en el caso que el usuario desactive
javascritp los links y los formularios funcionan normalmente.
un ejemplo de eso seria el siguiente: (entendiendo que ya cargaste esas
3
librerias js)
def show @artists = User.with_art_works.recently_updated.paginate :page =>
params[:page],:per_page => 9
#@artists = User
respond_to do |format|
format.html # show.html.erb
format.js do
render :update do |page| #page.alert “alert message”
page.replace_html ‘photos’, :partial =>
“portfolios/small_photos”
end
end
end
end
la gracia de livequery es que te recarga el dom cuando el elemento es
cargado por ajax, eso significa que puedes usar esos elementos nuevos
que
aparecen por la consulta ajax y puede seguir manipulandolos con
javascritp,
lo que hace lowpro es que te permite encapsular funcionalidades de
manera
muy agradable , ademas viene con las funciones link.Remote y
Form.Remote,
que son las que se hacen el trabajillo in-obstrusivo
entonces lo que te hace es servir la pagina de dos formas una como
request
html normal y otra si pasa por ajax
lo que hace lowpro es que te permite encapsular funcionalidades de NameBright - Coming Soon
sobre un elemento del documento se tengan en cuenta cuando se añanda
nuevos elementos al DOM del documento. Veo que esto me va ahorrar
bastantes quebraderos de cabeza a la hora de procesar llamadas AJAX que
incorporen nuevos elementos al DOM de mi HTML.
es cierto, low pro esta para prototype y luego se porta para jquery, la
gracia de lowpro es que te permite escribir el javascript mas al estilo
oop
, mira dicen por ahi que :
What is Low Pro? So what is Low Pro? It’s a plugin that provides a way
of
making more object-oriented JavaScript through event delegation.
jQuery’s
plugin architecture provides a really simple way of extending the core
functionality, but there is no easy way of making macros of code that do
several types of events on one element. Until now!"
Si no he entendido mal, Lowpro lo que hace es proporcionarme una forma
de crear clases de una forma más sencilla para modular mejor mis scripts
¿Me equivoco mucho?
Si no he entendido mal, Lowpro lo que hace es proporcionarme una forma
de crear clases de una forma más sencilla para modular mejor mis scripts
¿Me equivoco mucho?
Hola chicos,
estamos alargando el offtopic mucho, vamos a dejarlo aquÃ. En todo caso,
existen estupendas listas para hablar del tema como
jquery+livequery+low pro, te permite convertir links html y formularios
html
normales en formularios ajax, pero en el caso que el usuario desactive
javascritp los links y los formularios funcionan normalmente.
la gracia de livequery es que te recarga el dom cuando el elemento es
cargado por ajax, eso significa que puedes usar esos elementos nuevos
que
aparecen por la consulta ajax y puede seguir manipulandolos con
javascritp,
lo que hace lowpro es que te permite encapsular funcionalidades de
manera
muy agradable , ademas viene con las funciones link.Remote y
Form.Remote,
que son las que se hacen el trabajillo in-obstrusivo
entonces lo que te hace es servir la pagina de dos formas una como
request
html normal y otra si pasa por ajax
Vale, ya he entendido bien la funcionalidad de LiveQuery, sirve más que
nada para que los eventos y demás modificaciones que se hagan vÃa JS
sobre un elemento del documento se tengan en cuenta cuando se añanda
nuevos elementos al DOM del documento. Veo que esto me va ahorrar
bastantes quebraderos de cabeza a la hora de procesar llamadas AJAX que
incorporen nuevos elementos al DOM de mi HTML.