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ですか?