1

Ajax 経由で読み込まれるフォームの本文で Gmap4Rails を使用しています。フォームにはカスタム フィールドがあり、そのうちのいくつかは、非 Ajax バージョンのフォームで作業しているロケーション ピッカーである可能性があります。

フォームの Ajax バージョンでは、「Gmaps.my_map_id」未定義エラーが発生します。

フォームの非 Ajax バージョンでは、Gmaps4Rails で通常行われているように、"window.onload" の HTML ページ ヘッドで JavaScript を介して Gmaps.loadMaps を呼び出します。

ただし、window.onload 時にマップが定義されていないため、これは Ajax のコンテキストでは機能しません。

私のフォームでは、Gmaps マップ オブジェクトごとにコールバックも定義しています。これは、「Gmaps.loadMaps();」を実行しても、「未定義」エラーで失敗しているようです。最初のコールバックの直前のスクリプトは、Ajax によって読み込まれるコードで定義されます。

基本的に、コード順で次のようになります。

  1. ループ内で、gmaps4rails partial が呼び出され、各マップ カスタム フィールドが出力されます
  2. そのループが終了した後、Gmaps.loadMaps() が 1 回呼び出されます
  3. 別のループでは、各 Gmaps マップ オブジェクトにコールバック用の JS が追加されます。

これを機能させる方法に関する提案はありますか?

4

1 に答える 1

1

更新: 部分的にしか正しくない可能性があります (つまり、ここで概説した問題がありましたが、Gmaps.loadMaps() の呼び出しはまだ機能しません)。

2 回目の更新: load_... の定義を Gmaps オブジェクトに変更し、それに応じて Gmaps.loadMaps 関数を変更する必要がありました。https://github.com/apneadiving/Google-Maps-for-Rails/pull/94でプロジェクトにプル リクエストを送信しました。


Gmaps.loadMaps() 呼び出しは問題ではありませんでした。したがって、代替手段は必要ありません。私をつまずかせていたのは、部分的に enable_js が false として呼び出され、Gmaps4RailsGoogle の新しいインスタンスを宣言する JavaScript とそれをロードする関数が呼び出されていなかったことです。

私はパーシャルのカスタム バージョンを持っています。私の場合、enable_js (アプリの「javascript ライブラリ ファイルを読み込まない」と解釈します) が false の場合でも、新しい Gmaps4RailsGoogle インスタンスを宣言し、 load_... 関数。

そうは言っても、 load_... 関数は機能していないようです。私の場合、次のように返されます。

TypeError: 'undefined' は関数ではありません ('window"load_" + key' を評価しています)

(Gmaps.loadMaps 呼び出しではなく) コンソールから直接 load_... 関数を呼び出すと、同様のエラーが発生します。

"'undefined' is not a function (evaluating 'this.load_...()')"

おそらく、マーカーが宣言されていないことに関係しているのでしょうか? その問題に関するヒントをいただければ幸いです。

load... 関数のステップを実行すると、エラーをスローする最初のビットは .initialize() です。まだまだ調査中。

于 2011-09-14T17:29:47.960 に答える