J'essaie d'utiliser Dojo Toolkit 1.8 au lieu de JQuery dans une application web Rails 3.2.8, principalement en raison de l'absence d'un widget complet et visuellement uniforme basé sur JQuery. J'ai suivi les étapes suivantes :
- Décompressez les répertoires dojo, dijit et dojox dans app/assets/javascripts.
- Modifié dans application.js
//= require_tree .
a//= require_directory .
- Modification de la mise en page de l'application (pas encore discrète... juste pour l'effet de test)
vues/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Dojo</title>
<%= stylesheet_link_tag 'application' %>
<%= javascript_include_tag 'application' %>
<%= stylesheet_link_tag '/assets/dijit/themes/claro/claro.css' %>
<%= javascript_include_tag "dojo/dojo", :'data-dojo-config' => 'async: true' %>
<%= csrf_meta_tags %>
</head>
<body class='claro'>
<%= yield %>
<script>
require(["dojo/parser", "dojo/ready"], function(parser, ready) {
ready(function() {
parser.parse();
});
});
</script>
</body>
</html>
- Création d'un contrôleur nommé home et d'un modèle pour l'action index.
vues/home/index.html.erb
<input type="text" required="true" name="bday" id="bday" data-dojo-type="dijit/form/DateTextBox" value=<%= localize(Date.today - 21.days) %> />
<button id="button1" type="button" data-dojo-type="dijit/form/Button">Button 1</button>
Ok, Dijit fonctionne bien ! Mais quand j'essaye de mettre du code dojo dans un fichier CoffeeScript (assets/javascripts/home.js.coffee), un "ReferenceError : require n'est pas défini" Le message d'erreur est affiché sur la console Firebug. Exemple de code :
require ["dojo/domReady!"], () ->
alert('ok')
Si je mets un //= require dojo/dojo
avant le code ci-dessus, il s'exécute, mais tous les modules dojo sont chargés (pas seulement domReady) et une "Error : defineAlreadyDefined" est affichée sur Firebug.
Y a-t-il un moyen d'appeler la fonction require sans avoir à recharger tout le dojo.js ou même accéder à une variable globale dojo ?
Merci