0

我一直无法载入我的网页有一个隐藏的图,然后我就可以查看一下:toggle_map_button显示/隐藏地图,开始与一个隐藏的地图(显示:无)

在我看来一个Show /隐藏按钮和地图:

<%= link_to_remote "Hide Map", :url =>{:action => :toggle_map}, :method => :get, :loading => visual_effect(:toggle_slide, "marketplace_map", :duration => 1, :queue => 'front'), :html => {:id => "toggle_map_button", :class => "toggle_map_button"} %> 

<%= gmaps(:map_options => {:detect_location => true, :center_on_user => true, :zoom => 6, :id => "marketplace_map" }, :markers => { "data" => @json }) %>  

在我的CSS文件:

#maketplace_map 
{ 
    width: 100%; 
    height: 400px; 
    display: none; <= this doesn't get to be set (when I check in HTML code with Bugzilla) 
} 

在行动时我RJS文件:toggle_map:

page << "document.getElementById('toggle_map_button').innerHTML =(document.getElementById('toggle_map_button').innerHTML == 'Show Map' ? 'Hide Map' : 'Show Map')" 

page.flash_msg(:notice_box, flash[:notice]) if flash[:notice] 
page.flash_msg(:error_box, flash[:error]) if flash[:error] 

flash.discard 

当显示地图的页面开始时,整个事物都很完美。切换动作设置显示:无;正确...

问题出现在以隐藏地图开始并能够点击并将其向下滑动时。

任何想法?

干杯,

乔尔在生成的HTML

回答

3

看有点接近,我敢打赌,它看起来像:

<div class="map_container"> 
    <div id="marketplace_map" class="gmaps4rails_map"></div> 
</div> 

所以足够的CSS杆是map_container类。把display:none放在上面。


因为visual_effect似乎需要一个id,有两个选项:

  • 覆盖的gmaps4rails部分

  • 包裹gmaps助手在一个div:<div id="foo"> <%= gmaps(bar) %> </div>


我有另一个解决方案给你,只是测试。

你说得对,隐藏可见的地图很小。

所以加一个选项,你的助手:<%= gmaps(whatever, :last_map => false)%>

这不会创建地图,只加载它的对象。

然后添加一些JavaScript(我使用jQuery但你的想法):

<script> 
var createMap = true; 
$(function(){ 
    $("#click_me").click(function(){ 
    if (counter == true) 
    { 
    Gmaps.loadMaps(); //this will create the map 
    counter = false; 
    } 
    $(".map_container").toggle(); // this hides and shows 
    }); 
}); 
</script> 
+0

它是indee d!和显示:没有确实隐藏div(我注意到了),但是然后AJAX特殊效果需要传递你需要切换的div的id ...不是类名...这就是我一直试图得到的我的头在附近。我只是不管理。因此,我尝试与marketplace_map id一起工作......但是然后显示:none没有设置。除非有办法将类名传递给视觉效果(?)hm – zabumba

+1

您可以将类和id传递给您想要的任何效果(至少使用jQuery,但原型不应该如此) – apneadiving

+0

oh ok!谢谢我会尝试。顺便说一句,谢谢你的宝石! – zabumba

0

解决它THX到@apneadiving建议

补充选项:

:complete => 'Gmaps.loadMaps();' to visual_effect 

在查看:

<%= link_to_remote "Show Map", 
    :url =>{:action => :toggle_map}, 
    :method => :get, 
    :loading => visual_effect(:toggle_slide, "map", :duration => 1, :queue => 'front'), 
    :complete => 'Gmaps.loadMaps();', 
    :html => {:id => "toggle_map_button", :class => "toggle_map_button"} %> 

<div id="map" style="display:none;" > 
    <%= gmaps(:map_options => {:detect_location => true, :center_on_user => true, :zoom => 6, :id => "marketplace_map", :last_map => false }, :markers => { "data" => @json }) %>   
</div>