2012-05-20 77 views
1

我有一個評級控制器,其創建操作通過Javascript調用。我的評分文件夾中有一個create.js文件。我爲了想爲create.js文件來叫你需要這樣的.js文件被調用時沒有respond_to

respond_to do |format| 
    format.js 
end 

東西當我刪除此然而create.js文件仍然被調用。這是因爲create.js在創建操作中被調用(即方法和.js文件匹配的名稱)?謝謝!

更新:如果缺少format.js,則無法找到DOM的元素。舉例來說,如果我有像

$('#id_3').html('<%=escape_javascript render(:partial => 'show') %>'); 

局部「秀」被執行,因爲我可以在終端看到,但它無法找到的div「ID_3」,因此不會出現在DOM部分。任何清晰度將不勝感激,謝謝

回答

1

這就是Rails的工作原理:它呈現與動作名稱相同的視圖。

如果你有多個同名的意見(以不同的格式),你必須指定你的要求要哪一個,並使用respond_to方法作出相應的反應:

def index 
    respond_to do |format| 
    format.js { ... } 
    format.html { ... } 
    ... 
    end 
end 

GET /index.html將呈現index.html.erb文件(假設你使用ERB)

GET /index.js將呈現index.js.erb的文件

2

鐵軌神奇!如果您的資源鏈接類似於/dogs/1.js,那麼respond_to會像您想象的那樣處理它。嘗試調用/ dogs/1,看看會發生什麼。仍然有效?現在嘗試在format.js之前添加format.html。這應該給你一個關於respond_to如何工作的好主意。

+0

它調用的無的respond_to create.js,那是我的問題,這是爲什麼發生的 – Steve

相關問題