谷歌地图InfoBox在Rails应用程序中导致ActionController :: UnknownFormat错误
我正在构建一个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})) %>");
由于具有的respond_to已从轨道4.2中移除至个别宝石,我会建议您使用宝石“回应者”
请结算有关详细信息,下面给出的链接..
Why is respond_with being removed from rails 4.2 into it's own gem?
感谢您的建议。我将gem'responders'添加到gemfile中,但仍然是同样的问题。我在另一个使用rails 4.2.6的应用程序中使用了一段非常类似的代码,所以感觉这里还有其他的事情发生。 – Gavin
请求可能是发送为HTML。检查日志。原因很可能是一个脚本错误,它阻止了Rails UJS处理程序拦截点击。 – max
你在哪里安装信息框的点击处理程序?你能将这些代码添加到你的问题中吗? –
你目前使用的导轨版本是? –