Rails 3.2.8 Web アプリケーションで JQuery の代わりに Dojo Toolkit 1.8 を使用しようとしています。これは主に、JQuery に基づく完全で視覚的に統一されたウィジェットがないためです。次の手順に従いました。
- dojo、dijit、および dojox ディレクトリーを app/assets/javascripts に解凍します。
- application.js で変更され
//= require_tree .
ました//= require_directory .
- 編集されたアプリケーション レイアウト (まだ控えめではありません... テストの効果のためだけに)
ビュー/レイアウト/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>
- home という名前のコントローラーと index アクションのテンプレートを作成しました
ビュー/ホーム/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>
わかりました、Dijit はうまく機能します。しかし、CoffeeScript ファイル (assets/javascripts/home.js.coffee) 内に dojo コードを入れようとすると、Firebug コンソールに「ReferenceError: require is not defined」というエラー メッセージが表示されます。サンプルコード:
require ["dojo/domReady!"], () ->
alert('ok')
上記のコードの前に a を配置する//= require dojo/dojo
と実行されますが、すべての dojo モジュールがロードされ (domReady だけでなく)、Firebug で「エラー: defineAlreadyDefined」が発生します。
dojo.js 全体をリロードしたり、dojo グローバル変数にアクセスしたりすることなく、require 関数を呼び出す方法はありますか?
ありがとう