2011-08-04 65 views
1

我使用的jquery-rails gem與javascript_include_tag :defaults。因此,頁面已經報頭:Rails Ajax:.js.erb呈現爲文本,未執行

<script src="/javascripts/jquery.js?1312437063" type="text/javascript"></script> 
<script src="/javascripts/jquery_ujs.js?1312437070" type="text/javascript"></script> 
<script src="/javascripts/application.js?1311268601" type="text/javascript"></script> 
<meta name="csrf-param" content="authenticity_token"/> 
<meta name="csrf-token" content="KdgrBxF726xfPP3qbNOHd/0TG9c7lVCoZDXPnadFOzI="/> 

Ajax請求來自與線的視圖:

<%= link_to 'Run', :controller => "config_panel", :action => "full_run", :remote => true, :format => :js %> 

它呈現爲:

def full_run 
    respond_to do |format| 
    format.js { render :text => "alert();"} 
    format.xml 
    end 
end 

<a href="/config_panel/full_run.js?remote=true">Run</a> 

在控制器定義的響應

點擊鏈接時,服務器日誌:

Started GET "/config_panel/full_run.js?remote=true" 
Processing by ConfigPanelController#full_run as JS 
Parameters: {"remote"=>"true"} 
Rendered text template (0.0ms) 
Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms) 

和瀏覽器顯示的純文本:

alert(); 

的HTML頭有status: 200content-type: text/javascript。 Chrome瀏覽器JavaScript控制檯顯示沒有錯誤。

我嘗試以下解決方法:

  • 包括rails.js ---未能link_to<div onclick="$.ajax(...)">
  • 變化---制定

我非常受的行爲混淆:remote => true在link_to

回答

0

試試這個:

<%= link_to 'Run', { :controller => "config_panel", :action => "full_run" }, :remote => true %> 

,如果你使用過的路線幫手,把它當作一個散列就沒有必要

link_to reference