我已经在一个 rails (3.2.6) 应用程序中成功添加了 ujs。将 :remote => true 添加到我的表单标记允许我对我的 js.erb 文件进行 ajax 调用以动态加载 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 被忽略,我得到一个找不到模板的错误,因为 rails 正在将表单请求作为 html 处理,我可以在日志中确认。
我到处寻找解决方案,但无法弄清楚为什么我的 ujs 不适用于这个特定的应用程序,因为它与我的工作应用程序、gemset、版本和配置几乎相同。
我发现了其他几篇关于堆栈溢出的文章,人们遇到了同样的问题,但没有给出最终的有效答案。
任何帮助或方向将不胜感激。