0

geocomplete を使用して、#createフォームの住所フィールドに入力しています。Google マップ API はヘッドにロードされます。

<head>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=<%= ENV['DEV_MAPS_API_KEY'] %>&libraries=places">  </script>
</head>

アプリケーション.js.erb

$(document).ready(function(){
    $("#gig_location").geocomplete();
});

これはページの読み込み時にうまく機能し、ページを更新しても問題はありません。

フォームエラーがあると問題が発生します。render :new入力したフォーム フィールドが失われないように使用していますが、ページをリロードするとUncaught ReferenceError: google is not definedエラー メッセージが表示されます。

Gig_controller.rb

  def create 
      .....code....
    if @gig.save
      redirect_to @gig
      flash[:success] = "Gig created successfully"
    else
      @errors = @gig.errors
      @gig = Gig.new(gig_params.merge(genres: genres))
      render :new
    end
   end

ユーザーの場合redirect_to new_gig_path、これはすべてをリロードしてgeocomplete機能しますが、フォーム入力も消去されます。

他の jquery 要素は呼び出された後も機能し続けますrender :newが、機能しないのは Google マップ API だけです。

レンダリング時にGoogleマップAPI jqueryをリロード/保存するにはどうすればよい:newですか?

4

2 に答える 2