gpt4 book ai didi

ruby-on-rails - UJS 的问题

转载 作者:行者123 更新时间:2023-12-01 04:56:47 24 4
gpt4 key购买 nike

我已成功在一个 Rails (3.2.6) 应用程序中添加 ujs。添加 :remote => true 到我的表单标签允许我对我的 js.erb 文件进行 ajax 调用以动态加载 div 等..

但是在同一台计算机上的另一个应用程序(Ubuntu 12.0.4)中,ujs 引擎似乎无法工作。我总是收到找不到模板,因为表单发送格式 => html 而不是 js。如果我强制表单使用 js 格式(format => 'js'),那么它只会呈现 js.erb 文件,而不是通过 ajax 调用它。

在 application.js 中,我添加了正确的 header ,其中包含以下内容:

//= 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, View 就会呈现)和一个方法在处理请求的 Controller 中(def list....end),后续的 list.js.erb 被忽略,并且我得到一个模板未找到错误,因为rails正在将表单请求作为html处理,我可以在日志。

我已经尽我所能寻找解决方案,但无法弄清楚为什么我的 ujs 不适用于这个特定的应用程序,因为它与我的工作应用程序、gemset、版本和配置几乎相同。

我发现了几篇关于堆栈溢出的其他文章,人们也遇到了同样的问题,但没有给出最终的有效答案。

任何帮助或指导将不胜感激。

最佳答案

这确实是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 小组的其他开发人员一起做出的贡献帮助我最终解决了我的问题。

关于ruby-on-rails - UJS 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13808306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com