我正在构建一个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} ) ) %>" );
答案 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?