首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UJS的问题

UJS的问题
EN

Stack Overflow用户
提问于 2012-12-11 04:04:11
回答 1查看 334关注 0票数 2

我已经成功地在one rails (3.2.6)应用程序中添加了ujs。在我的表单标记中添加:允许我对js.erb文件进行=>调用,以便动态加载div等。

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

在application.js中,我已经在下面的代码中包含了正确的标头:

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require_tree .

当我实际浏览到使用应用程序布局的主主页时,javascript文件将被包括在内,其中包括上述javascirpt引用。页面中的表单如下:

代码语言:javascript
复制
<%= 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、版本和配置几乎相同。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 07:21:18

这确实是ajax被破坏的一个问题。我用来提交表单的onkeyup触发器如下:

代码语言:javascript
复制
<%= form_tag list_path, :id => 'frmBookResults', :remote => true do %>
    <input id='keyword' type='text' onkeyup='document.forms["frmBookResults"].submit();'/>
<% end %>

请注意以下事项:

代码语言:javascript
复制
document.forms["frmBookResults"].submit();

显然,通过javascript提交表单是一个问题,因为当我按照下面的描述更新onkeyup以使用jquery提交时,rails ujs起作用了,对我的list.js.erb的ajax调用也起作用了:

代码语言:javascript
复制
onkeyup="jQuery('#frmBookResults').submit()"

感谢所有的反馈mccanff!您的贡献以及linkedIn rails小组的其他开发人员帮助我最终解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13808306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档