使用gMap渲染部分通过JSON传递

时间:2011-02-03 07:42:43

标签: javascript ruby-on-rails google-maps

我正在使用gMap(http://gmap.nurtext.de/)在Rails应用中显示地图数据。它的工作方式是传递包含变量的JSON标记,并在Google Map上呈现它们。当您单击标记时,它会显示变量'html'中包含的HTML。

它运行正常,但此刻我正在从模型中传递JSON中的html。这让我很烦,因为html应该在视图中。我想以某种方式传递JSON中的部分,然后在html中呈现。

目前,在模型中使用此代码

创建了json
def as_json(options={})

    hash = Hash.new
    hash[:longitude] = longitude.to_i
    hash[:latitude] = latitude.to_i
    hash[:html] = "<p>#{title}</p>"
    hash[:popup] = true
    hash[:url] = "/listings/"+id.to_s

    return hash    
end

:html键是我想放置的东西,如

hash[:html] = "<%= render :partial => "listings/bubble", :locals => {:listing => @listings.first} %>"

部分工作本身 - 我已将其直接用于检查。当您在JSON中使用直接html时,弹出气泡也会起作用。

但是,当部分在JSON内传递时,生成的代码为

<div class="gmap_marker">
    <%= render :partial => "listings/bubble", :locals => {:listing => @listings.first} %>
</div>

它最终只是HTML中的一个字符串,它永远不会呈现。

所以我想我正在寻找两种选择:

  1. 部分在作为JSON传递之前呈现(例如在模型结束时) 或
  2. 渲染视图时渲染部分。
  3. 不确定这是一个javascript问题还是一个Rails问题,但任何帮助都将不胜感激!

    干杯

1 个答案:

答案 0 :(得分:0)

您已经有了正确的想法,但必须使用render_to_string函数:

hash[:html] = render_to_string(:partial => "listings/bubble", 
    :locals => {:listing => @listings.first})