我是一個相對noob,但一直在我的項目中集成gmaps4rails樂趣。我遇到了一個可能是寶石缺陷的問題,或者可能只是我的無知,但我希望有人能指出我正確的方向。addMarkers(@marker)不適用於動態內容
我有一個包含jquery選項卡UI元素的主頁。一個選項卡包含故事的列表視圖,第二個選項卡包含這些故事的地圖視圖。我在地圖視圖中使用gmaps4rails。
在頁面上重新加載符合我的搜索條件的所有故事會按預期出現在我的列表視圖和地圖視圖中。我嘗試使用Gmaps.map.addMarkers()時出現問題。
比方說,我添加一個新的故事,符合我的搜索參數。我的故事#創建動作在@story變量如預期,然後我設置@marker變量,如下所示:
@markers = @story.to_gmaps4rails
然後我create.js.erb視圖適當地插入@story進入我的列表選項卡視圖。不幸的是,Gmaps.map.addMarkers(@marker)不會將標記插入到地圖標籤視圖中。
下面是一些更相關的代碼:
story.rb:
class Story < ActiveRecord::Base
acts_as_api
acts_as_gmappable :process_geocoding => false
def gmaps4rails_marker_picture
{
"rich_marker" => "<div class='story_marker' id=marker_for_story_#{self.id } ><img height='30' width='30' src='http://farm4.static.flickr.com/3212/3012579547_097e27ced9_m.jpg'/></div>"
}
end
create.js.erb:
$("#stories_list").prepend("<%=raw escape_javascript(render(@story)) %>"); //put new story in list view
<%= logger.debug("!!!!!!!!!! gmaps json array: #{@marker}")%>
Gmaps.map.addMarkers(@marker);
home.html.erb:
<div id="map-tab">
<%= yield :head %> <!-- for gmaps4rails -->
<%= gmaps("markers" => { "data" => @json, "options" => { "clusterer_gridSize" => 5, "clusterer_maxZoom" => 13 } }) %>
</div>
當我在調用後檢查控制檯create.js.erb我看到@marker確實包含正確的json數組信息。我可以直接從控制檯複製這些信息,然後使用螢火蟲控制檯運行addMarkers(複製的json數組信息),並且標記按預期顯示。另外,我可以在我的create.js.erb文件中修改addMarkers命令,使其看起來像下面這樣,也可以工作:Gmaps.map.addMarkers([{"lng": "<%[email protected]%>", "lat": "<%[email protected] %>"}]);
但是,我寧願使用to_gmaps4rails助手。
感謝您的任何幫助,您可以給我解決這個謎,節日快樂!
我看到這個答案,並認爲,當然。 。 。我多麼愚蠢。不幸的是,我仍然遇到了由答案產生的轉義字符問題,並希望你能幫助我。如果我使用答案,我的帖子請求會返回js中的各種轉義字符(例如「Gmaps.map.addMarkers [" description ":。。」)。當我使用「Gmaps.map.addMarkers <%= raw escape_javascript @markers%>;「,但我仍然在json中有反斜槓。 (例如,Gmaps.map.addMarkers [{\「description \」:。。。)我如何正確渲染它? – 2011-12-26 22:33:25
剛剛嘗試過,僅僅是:'<%= raw @json%>'呈現有效的json。 – apneadiving 2012-01-01 14:02:18