Google地图信息框导致Rails应用

时间:2016-05-16 21:47:02

标签: ruby-on-rails infowindow gmaps4rails infobox

我正在构建一个Rails应用程序,其中包含带有标记的地图(在应用程序中也称为“情节”)。单击标记/绘图时,标记旁边会显示信息框。我正在尝试添加一个功能,其中单击信息框会在地图旁边显示部分信息,并提供与该特定情节相关的更多详细信息。

我正在使用Gmaps4Rails,上面描述的功能在使用Google的标准Infowindows时工作正常,但如果我尝试使用InfoBox插件,那么我可以获得InfoBoxes的所有样式优势,我收到错误。

  

的ActionController :: UnknownFormat

Screen grab of rails error message here

查看日志,看来请求正在以Infowindows的形式正确发送,但出于某种原因,使用InfoBox插件时,它将以HTML格式发送。

使用Infowindow的日志消息就是这个......

  

在2016-05-21 13:50:02为:: 1开始获取“/ plots / 1 / plotdetails”   +0100由PlotsController处理#slotdetails作为JS参数:{“id”=>“1”}绘图负载(0.3ms)SELECT“plots”。* FROM“plots”WHERE   “plots”。“id”= $ 1 LIMIT 1 [[“id”,1]]呈现   plots / _plotdetails.html.erb(0.1ms)已渲染   plots / plotdetails.js.erb(4.0ms)在17ms完成200 OK(浏览次数:   14.4ms | ActiveRecord:0.3ms)

InfoBox插件的日志消息如下......

  

在2016-05-17 18:52:38为:: 1开始获取“/ plots / 2 / plotdetails”   +0100由PlotsController处理#lotdetails作为HTML参数:{“id”=>“2”}绘图负载(0.3ms)选择“绘图”。* FROM“绘图”WHERE   “plots”。“id”= $ 1 LIMIT 1 [[“id”,2]]已完成406不可接受   3ms(ActiveRecord:0.3ms)

     

ActionController :: UnknownFormat(ActionController :: UnknownFormat):
  app / controllers / plots_controller.rb:95:在`plotdetails'

我找不到解决方案所以我正在考虑尝试用JQuery AJAX来实现它,但我不禁觉得这应该是可以解决的。任何想法都会非常感激。

routes.rb

Rails.application.routes.draw do   
  resources :architects
  resources :plots do
    get :plotdetails, :on => :member
  end
  root 'plots#map'

plots_controller.rb (控制器中有更多代码,但这似乎是相关部分)

  def plotdetails
    @plot = Plot.find(params[:id])
    respond_to do |format|
      format.js { render :layout => false }
    end
  end

视图/曲线/ map.html.erb

<%= render 'partials/menu' %>

<div id="plotdetails"></div>

<div id="map"></div>

<script type="text/javascript">

  buildMap(<%=raw @hash.to_json %>);

</script>

视图/曲线/ _infobox.html.erb

<%= link_to plotdetails_plot_path(:id => plot.id), :remote => true do %>
  <div id="infobox">
      <div id="infobox-img">
        <img src="<%= plot.img_link %>">
      </div>
      <div id="infobox-text">
        <h3><%= plot.title %></h3>
        <p>Architect: <%= plot.architect.name %></p>
        <p><%= plot.address %></p> 
      </div>
  </div>
<% end %>

视图/曲线/ _plotdetails.html.erb

<div>
      <ul>
          <li>plot.title</li>
          <li>plot.details</li>
      </ul>
</div>

视图/曲线/ plotdetails.js.erb

$( "#plotdetails" ).html( "<%= escape_javascript( render( :partial => "plotdetails", :locals => { :plot => @plot} ) ) %>" );

1 个答案:

答案 0 :(得分:0)

由于respond_to已从rails 4.2移除到单个gem,我将建议您使用gem&#39; responders&#39;

请查看以下链接以了解更多详情..

Why is respond_with being removed from rails 4.2 into it's own gem?