0

Rails 3.1 edgeは、スプロケットを使用して.jsファイルと.scssファイルを処理します。スプロケットは、コメントを使用して依存関係を処理します。

3つのフォルダー(dojo dijit dojox)をvendor / Assets/javascriptsに配置しました。次に、app / Assets / javascripts / application.js // = require dojo / dojo console.log(dojo);に行を追加します。

これで、dojoがapplication.jsにマージされました。しかし、道場には依存関係システム自体があります。より多くの道場モジュールが必要な場合。正しいパスが見つかりません。dojo.require( "dojox.grid.DataGrid"); // Webkitコンソールのエラー:エラー:'dojox.grid.DataGrid'を読み込めませんでした; 最後に試行した'../dojox/grid/DataGrid.js'// Railsサーバーログのエラー:127.0.0.1のGET "/undefined../dojox/grid/DataGrid.js"を4月16日土曜日01:26に開始しました: 05 +0800 2011

これらは2つの異なる依存関係システムです。どうすればそれらを組み合わせることができますか?

4

4 に答える 4

1

dojo.js名前を変更するのは自然なことではありません。これは、Dojo の初期化プロセスの一部で、それ自体をロードするスクリプト タグを DOM 内で検索することが含まれているためです。これには次の 2 つの理由があります。

  1. baseUrlまだ指定されていないかどうかを判断する
  2. script タグ自体で指定されたdjConfig(または1.6 以降の) プロパティをピックアップします。data-dojo-config

このスクリプト タグを検索するとき、またはにsrc設定されているものを探します。あなたの場合はそれが見つからないため、失敗します。dojo.jsdojo.xd.js

Dojo をロードするタグのに別のタグをプログラムで完全に指定するdjConfig(または1.6 以降で) ことと、これらの構成プロパティーで手動で指定することにより、これらの問題の両方を回避できるはずです。dojoConfigscriptbaseUrl

たとえば、元の投稿で言及されている場合application.jsvendor/assets/javascripts、次のことを試すことができます。

<script type="text/javascript">
    //if you're using 1.5 or earlier, use djConfig instead of dojoConfig
    var dojoConfig = {
        //note that baseUrl points to the folder containing dojo.js, therefore the dojo folder
        baseUrl: 'vendor/assets/javascripts/dojo/'
    };
</script>
<script type="text/javascript" src="vendor/assets/javascripts/application.js"></script>

Dojo 構成設定の詳細については、 http : //dojotoolkit.org/reference-guide/djConfig.html を参照してください (実際には、このページの baseUrl の下に renamed に関する注記がありdojo.jsます)。

于 2011-04-16T01:07:51.597 に答える
1

dojo/scriptsの下のディレクトリーに dojo ファイルを追加してみてください/vendor/assets/javascripts。dojo ディレクトリーで、ディレクトリー内に dojo.js ファイルを作成し、そのファイルdojoに入れ//= provide "scripts"ます。

次に、application.jsファイルに//= require <dojo>. Sprockets のサイトhttp://getsprockets.org/で情報を確認してください。

Rails 3.1 とアセット パイプラインのドキュメントはまだ公開されていないため、これらの多くは自分で調べようとするものです。

于 2011-05-24T05:29:56.557 に答える
0

うーん...なぜJavaScriptをでvendorはなくアプリに配置するのpublic/javascriptsですか?path_to_javascriptの対象となる場所に何かを含めpublic/javascriptsます=javascript_include_tag('path_to_javascript')"dojo/DataGrid"public/javascripts/dojo/DataGrid.js

http://guides.rubyonrails.org/getting_started.html

于 2011-04-15T23:34:46.080 に答える
0

少し遅いかもしれませんが、他の誰かを助けることができます。

私はついにそれを機能させ、ここに説明を投稿しました。

于 2011-10-19T19:15:03.980 に答える