2016-05-16 62 views
0

我正在构建一个Rails应用程序,其中包含带有标记的地图(在应用程序中也称为“地块”)。点击标记/绘图时,信息框出现在标记旁边。我试图添加一个功能,点击信息框会在地图旁边呈现部分地图,并提供与该特定地块相关的更多详细信息。谷歌地图InfoBox在Rails应用程序中导致ActionController :: UnknownFormat错误

我正在使用Gmaps4Rails,并且上述功能在使用Google的标准Infowindows实施时效果很好,但如果我尝试使用InfoBox插件,那么我可以拥有InfoBoxes的所有样式优势,但出现错误。

的ActionController :: UnknownFormat

Screen grab of rails error message here

查看日志它出现在请求被发送正确的JS与信息窗口,但由于某种原因,使用信息框插件就被发送时作为HTML。与信息窗口

日志消息是这样的......

发起者PlotsController GET “/图/ 1/plotdetails” 为:: 1,在2016年5月21日十三时50分02秒 +0100处理#plotdetails as JS参数:{“id”=>“1”}绘图加载(0.3ms)选择“绘图”。* FROM“plots”WHERE “plots”。“id”= $ 1 LIMIT 1 [[“ ,1]]渲染 地块/ _plotdetails.html.erb渲染 地块/ plotdetails.js.erb(4.0ms)(0.1毫秒)已完成的200 OK中17MS(查看: 14.4ms |的ActiveRecord:0.3ms的)

与资讯盒插件

日志消息是以下...

发起者PlotsController GET “/绘图/ 2/plotdetails” 为:: 1在2016年5月17日18时52分38秒 0100处理#plotdetails as HTML参数:{“id”=>“2”}绘制加载(0.3ms)SELECT“plots”。* FROM“plots”WHERE “plots”。“id”= $ 1 LIMIT 1 [[“ ,2]]已完成406在 3ms的(ActiveRecord的:0.3ms的)不接受

的ActionController :: UnknownFormat(ActionController的:: UnknownFormat):
应用程序/控制器/ 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> 

views/plots/_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})) %>"); 
+0

请求可能是发送为HTML。检查日志。原因很可能是一个脚本错误,它阻止了Rails UJS处理程序拦截点击。 – max

+0

你在哪里安装信息框的点击处理程序?你能将这些代码添加到你的问题中吗? –

+0

你目前使用的导轨版本是? –

回答

0

由于具有的respond_to已从轨道4.2中移除至个别宝石,我会建议您使用宝石“回应者”

请结算有关详细信息,下面给出的链接..

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

+0

感谢您的建议。我将gem'responders'添加到gemfile中,但仍然是同样的问题。我在另一个使用rails 4.2.6的应用程序中使用了一段非常类似的代码,所以感觉这里还有其他的事情发生。 – Gavin

相关问题