我已经成功地在one rails (3.2.6)应用程序中添加了ujs。在我的表单标记中添加:允许我对js.erb文件进行=>调用,以便动态加载div等。
但在同一台机器上的另一个应用程序(Ubuntu 12.0.4)中,ujs引擎似乎无法工作。我总是收到找不到模板的消息,因为表单发送的是=> html格式,而不是js格式。如果我强制表单使用js格式(格式为=> 'js'),那么它只会呈现js.erb文件,而不是通过ajax调用它。
在application.js中,我已经在下面的代码中包含了正确的标头:
//= require jquery
//= require jquery_ujs
//= require_tree .当我实际浏览到使用应用程序布局的主主页时,javascript文件将被包括在内,其中包括上述javascirpt引用。页面中的表单如下:
<%= form_tag list_path, :remote => true, :id => 'frmBookResults', :method => :post do %>但是,尽管它包含:remote => true,并且为list_path建立了一个路由(该路由可以工作,因为如果我将list.js.erb更改为list.html.erb,视图就会呈现),并且控制器中有一个处理请求的方法(def list....end),后续的list.js.erb将被忽略,并且我会得到一个template not found错误,因为rails将表单请求作为html处理,我可以在日志中确认它。
我到处寻找解决方案,但我不明白为什么我的ujs不能在这个特定的应用程序上工作,因为它与我的工作应用程序、gemset、版本和配置几乎相同。
我找到了其他几篇关于堆栈溢出的文章,人们都有同样的问题,但没有给出最终的、有效的答案。
任何帮助或指导都将不胜感激。
发布于 2012-12-13 07:21:18
这确实是ajax被破坏的一个问题。我用来提交表单的onkeyup触发器如下:
<%= form_tag list_path, :id => 'frmBookResults', :remote => true do %>
<input id='keyword' type='text' onkeyup='document.forms["frmBookResults"].submit();'/>
<% end %>请注意以下事项:
document.forms["frmBookResults"].submit();显然,通过javascript提交表单是一个问题,因为当我按照下面的描述更新onkeyup以使用jquery提交时,rails ujs起作用了,对我的list.js.erb的ajax调用也起作用了:
onkeyup="jQuery('#frmBookResults').submit()"感谢所有的反馈mccanff!您的贡献以及linkedIn rails小组的其他开发人员帮助我最终解决了我的问题。
https://stackoverflow.com/questions/13808306
复制相似问题