2016-05-16 54 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

相關問題