從您的描述中可以看出,您的鏈接看起來像沒有隱藏的JavaScript監聽器,因此瀏覽器只是遵循鏈接的href
。所以這個問題似乎在客戶端。
但是,您的問題沒有給出足夠的細節以給出直接的答案,所以我只列出我爲調查此問題而採取的所有步驟。
首先,爲了使這項工作,你必須在你的佈局<head>
標籤內包含所有必需的javascript和csrf元標籤。這是最好做到這一點的:
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
如果你有這個,加載頁面,查看源代碼,如果它真的正確生成的鏈接。您應該看到這樣的事情:
<head>
<script src="/javascripts/prototype.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/effects.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/controls.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/rails.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/application.js?1285934960" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="b2HRysd23edj1/vrCSRDSac0seDFae3n2gCoTjt0="/>
</head>
如果他們在那裏,我安裝的Firebug的JavaScript調試器,或使用Chrome開發人員工具,打開它,看看是否有是頁面上的任何錯誤時,它的加載和當你點擊鏈接。你也可以查看發送的請求,看看它們是否是xhr。
如果仍然無效,請在Firebug中打開rails.js
,並在負責在data-remote
和/或data-method
上附加聽衆的代碼片段之前設置一個斷點。這是一個:
document.on("click", "a[data-remote]", function(event, element) {
if (event.stopped) return;
handleRemote(element);
event.stop();
});
在第一行設置一個斷點,並在處理函數中設置第二個斷點。然後重新加載頁面並查看它是否附加了偵聽器。然後點擊鏈接,看看處理程序是否被解僱。然後......這取決於發生了什麼。希望你可以繼續自己。
而只是一個普遍的說明 - 我認爲show
行動應與get
而不是post
訪問。
- 編輯 -
我覺得406 not acceptable
返回,因爲你沒有format.html
在respond_to
塊做。如果你添加它,那麼它應該只呈現show.html.erb
模板。
您的佈局是否通過'javascript_include_tag'包含腳本? – 2010-10-13 01:52:38
是的,它的確如此。 asdf – herpderp 2010-10-13 04:24:26