2010-02-11 10 views
5

En las notas de la versión para rieles 3.0 beta que dice:Rails 3.0 beta y JS Ayudantes con jQuery

"ayudantes Javascript no intrusivo con controladores para Prototype, jQuery"

Así que ¿Cómo fijo Rails 3 para usar jQuery entonces? Todavía carga todas las bibliotecas de Prototype de forma predeterminada.

Me tomó esto como que Rails 3 ha construido en una funcionalidad similar al plugin jRails, pero tal vez estoy malentendido :)

También, como una cuestión de bonificación, si estoy usando Prototype hay una manera para que Rails cargue las versiones minificadas, y aún mejor, un solo archivo JS concatenado para reducir las solicitudes http?

Gracias.

Respuesta

0

No sé sobre Rails 3, pero intentaré responder una pregunta extra.

Puede poner lo que desee en el directorio public/javascript. Por defecto cargará archivos: prototype.js, effects.js, dragdrop.js y controls.js (read more). Si desea comprimir todos los archivos js y enviarlos en un solo archivo, puede usar este plugin.

Por supuesto que no funcionará para archivos js generados dinámicamente.

+0

Ah, práctico, gracias :) – firecall

0

También estoy trabajando en eso con el intento de convertir mi viejo ajax con rieles 3.

De lo que puedo decir, que se trasladaron a una estructura que añade un data-remote=true y cuando se agrega :remote => true a algo así como link_to que se supone que reemplaza link_to_remote en rieles 3, por lo que no hay más métodos onclick que llame a los métodos Ajax.

Entonces, ¿cómo funciona Ajax en Rails 3, entonces? Bueno, se supone que debes tener métodos de JavaScript que estén atentos cuando haces clic en los enlaces que tienen una propiedad de data-remote=true y hacen algo con eso, pero no los incluyes en Rails (por lo que puedo decir), es una biblioteca independiente ya que Puede escribir estos métodos para ver los clics en prototipos, jquery, escribirlos usted mismo o cualquier otra cosa que exista.

he encontrado algunos javascript en github para empezar que estarán atentos a estos eventos:

En prototype

En jQuery

Creo que con el fin de cargar en realidad jQuery en lugar de prototipo, se Solo tendrá que descargarlo a public/javascripts y especificar manualmente jquery, usar javascript_include_tag :all o anular javascript_include_tag (no recomendado)

+0

Estaba equivocado acerca de que Rails no incluye uno de los scripts de UJS ... está en público/javascripts/rails.js Supongo que me lo perdí antes. –

1

discreto JS no se refiere a los métodos PrototypeHelper, sino a formas y enlaces remotos y similares. El concepto es que incluya :remote => true en su form_for o cualquiera que sea el método de ayuda que lo soporte, y luego un controlador llamado rails.js buscará esos controles remotos e interceptará los eventos submit o click y los enviará a través de xhr.

Para usar jquery solo tendrá que reemplazar el controlador ujs prototipo (que se envía con rieles) con el controlador jquery ujs, que se extrajo en su propio repositorio poco antes de la versión beta de los rieles 3. Lo puedes encontrar here.

2

Cuando se crea una aplicación Rails 3, sólo tiene que pasar a lo largo del -J parámetro así:

$ rails app_name -J 

Esto saltará incluyendo las librerías de Prototype. Ahora, todo lo que necesita hacer es soltar el último archivo jquery.js en el directorio public/javascripts. Una vez que lo haga, también necesitará la versión jQuery del archivo rails.js. Usted puede conseguir que aquí:

http://github.com/rails/jquery-ujs/blob/master/src/rails.js

EDIT: Es necesario incluir estos archivos en la parte superior de los diseños para obtener la funcionalidad. Usted puede hacer esto por:

<%= javascript_include_tag "jquery", "rails" %> 

Espero que esto ayude!

+0

Sí, esa es la respuesta que estaba buscando :) Gracias. Creo que asumí que habría una configuración para esto, y también una configuración para usar versiones minificadas para fines de implementación. Parece que es una práctica estándar y algo que Rails debería hacer de serie. ¿Por qué incluye un prototipo no miniatlado para empezar? – firecall

+0

Puedes usar mi complemento para hacer eso: http://github.com/voxxit/assemblage –

1

Salida Google Closure

Se puede convertir múltiples archivos JavaScript en un único archivo JS comprimido. Incluso puede averiguar qué partes de la biblioteca no está utilizando y eliminarlas también.

+0

Sí, lo sabía. Ya uso un flujo de trabajo manual que ejecuta YUI Compressor y luego CAT a través de un script de shell. Pero realmente me preguntaba si había una forma integrada de Rails o algo para reducir las solicitudes de http. Parece inútil incluir tantas versiones no minificadas como las predeterminadas: / – firecall

Cuestiones relacionadas