从您的描述中可以看出,您的链接看起来像没有隐藏的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