Q&A
ajaxを用いてデータを送り、コントローラで操作をして、google mapに表示をするという流れを組みました。こちらのサイトを参考にしてrailsの表示を、こちらのサイトを参考にしてajaxの仕組みを作り、これらのを組み合わせてviewerを作りました。で, @hashを狙い通り、ajaxで渡した値を考慮した値にしてうけとれることを確認しました。しかし、これを実際にgoogle mapに表示しようとするところまでしようとするとgoogle mapごとなにも表示されなくなります。エラーの原因をつきとめたところmap.js.erbのjavascriptのコードの中に<%= raw hash.to_json %>を書くことでそこで処理がとま流ことがわかりました。しかしこの原因がわかりません。またコントローラ側で @hashを@hash_json = @hash.to_jsonとしてその値を参照させても同様のエラーがおこり、googlemapが表示されなくなります。
ajaxから値を渡すところ、コントローラ側の処理(@hashをつくるところまで)にエラーはありません。
アドバイスをいただきたいです。よろしくおねがいいたします。
map.js.erb
1$('#result').html('<div><%= @hash_json %></div><div id="map" style="height:400px;"></div><script type="text/javascript">handler=Gmaps.build("Google");var mapOptions = {mapTypeId: google.maps.MapTypeId.SATELLITE};handler.buildMap({provider:mapOptions,internal:{id:"map"}},function(){markers=handler.addMarkers(<%= raw @hash.to_json %>);handler.bounds.extendWith(markers);handler.fitMapToBounds();})</script>'); 2 3<!-- 4raw @hash.to_jsonを消すと、雛形のgooglemap(なにもプロットしてないやつ)が表示されるが、これを足すとgooglemapごと表示されなくなる。 5--> 6
map.html.erb
1<h1>マップ</h1> 2<%= form_tag(url_for(:action => 'map'), :remote => true, :id => "result_form") do %> 3 <%= text_field_tag :hop %> 4 <%= submit_tag "Show!" %> 5<% end %> 6<!-- ここにgoogle mapを足して内容をjavascriptで制御する 7--> 8<div id="result"></div>