问题标签 [ujs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - 不显眼的 jquery 和 rails
我是 UJS 的粉丝很长时间了,我通常把我所有的代码都放在 application.js 中(jquery,不是原型)
但是,我遇到了一个巨大的项目,如果不加注意,application.js 会膨胀,我不希望这种情况发生,特别是因为我的大部分功能/行为都将基于特定页面。现在,我倾向于将 javascript 调用放在特定的部分上,如下所示:
在 _test_partial.html.haml 上:
或者,如果我真的想要“不引人注目”的东西:
但是在我看来,这仍然很突兀,好像我必须编辑代码/行为,我将不得不寻找有关的部分。另一方面,我需要编辑一个函数的 1MB(有很多页面,并且可能会有很多页面特定的代码)application.js 不是那么容易。
通常对此有何看法?有没有办法让我命名一个js文件ala RJS,比如test_partial.js.erb os什么的?
jquery - 使用 jquery + rails ujs driver + google maps v3 时出现 IE 8 jquery 错误。解决方法?
用 jquery 1.4.4 和 1.5.1 测试,确认两者都有问题
使用 jquery + rails ujs 驱动程序(来自 github)+ google maps v3 时,单击地图标记会导致 IE 错误“失败”。当使用完整的、CDN 托管的 jquery v 1.5.1 时,IE 调试器指向第 2838 行(请注意,jquery.min.js 或版本 1.4.4 也会出现问题)。
确认触发此错误的是ujs驱动程序。删除驱动程序后,单击标记不会导致错误。
此处提供了简单的实时示例:http: //avioing.com/maps/marker-simple.html。此页面是谷歌示例页面http://code.google.com/apis/maps/documentation/javascript/examples/marker-simple.html的精确副本。我只添加了脚本调用来加载 jquery 和最新的 ujs 驱动程序。您应该能够通过单击地图标记来重现错误。
示例页面在 FF 和 Chrome 中运行良好,错误仅在 IE 中出现
另请参阅 http://avioing.com/maps/marker-simple_no_ujs.html和 http://avioing.com/maps/marker-simple_no_marker.html,两者均未出现此问题。
有人知道解决方法吗?
ruby-on-rails-3 - 在 IE 上静默忽略 jquery 验证 - 使用 rails ujs 驱动程序 + jquery-validation + ajax 表单时
我不清楚问题出在 ujs 驱动程序还是 jquery-validate 插件上...
当使用 jquery UJS 驱动程序(最新,来自 github)+ jquery-validate 插件(最新,来自 github)+ ajax 表单(通过 data-remote 标记)时,验证规则会被忽略。仅在 IE 8 中,chrome 和 FF 工作正常
使用来自 github 的最新 jquery-validation 使用 jquery 1.4.4 和 jquery 1.5.1 进行测试。
这是一个简单的例子: http ://avioing.com/validate/example.html和 http://avioing.com/validate/example_no_ujs.html
尝试提交表单,同时将 cityfield 留空。在第一种情况下什么都不会发生。您将看到在第二种情况下触发的验证消息。
这两个文件之间的唯一区别是我从后一个文件的表单中删除了“data-remote”标签,现在触发了验证。
jquery - 单击Ajax样式的控件时如何异步提交表单?
在 Rails3 应用程序中,我有一个root
由单选控件(不是复选框)表示的布尔属性,我希望能够自动保存root
- Ajax 样式的新值。
我目前有 2 个提交选项:
- 按
submit_tag
预期工作:该操作是通过 XHR 调用的,我的set_root.js.erb
模板会相应地更新页面,但我不想为此单击单独的按钮,所以我尝试了: - 添加
:onclick => "this.form.submit();"
到我的无线电控制。这会提交表单,但以经典的非 ajax 方式提交,因此我因缺少html模板而收到错误消息。
单击无线电控件时,我应该怎么做才能异步提交表单(可能是 UJS 方法)?
注意:我在我的项目中使用 jQuery。
javascript - Rails 在选择元素更改时更新表单的内容
我有一个带有选择框和三个文本输入框的表单。When the option in the select box changes, I want to update the three text input boxes with values corresponding to the selected option. 这些值是存储在服务器上的模型对象。
我正在使用 Rails 3 并试图保持不引人注目,但我找不到一种干净的方法来做到这一点。我想出了几个可怕的、混乱的解决方案,但还没有一个干净的解决方案。将这一切联系在一起的好方法是什么?特别是,我遇到了从服务器请求模型对象的选择元素的问题。
这是生成表单的视图:
因此,我希望在“地区”更改时填充城市/州/国家/地区字段。请注意,区域也是表单本身的一部分。
javascript - Rails 3/JQuery 表单在页面上重复
我有一个看起来与此类似的表格 -
非常直接 - 为页面重复 20 倍。基本目的是让用户从表单列表中向下走,一次性更新值,然后继续前进。
为了使它更好一点,我正在通过 AJAX 提交,并希望允许指示事情正在更新。但是,我似乎无法让它正常工作 - 这是我正在使用的 javascript:
我 99% 肯定我使用“this”是错误的——但我似乎无法调试原因。
ruby-on-rails-3 - 使用简单的 javascript 并通过 Rails3 和 UJS 传递参数
我看过关于不显眼的 javascript 的 railscasts 并阅读了许多教程,但是 Rails3 中关于不显眼的 javascript 的两件事仍然让我感到困惑:
- 简单 javascript 的终点(隐藏一些元素,添加 CSS 类,...)
- 向 JS 传递参数
让我用示例代码来澄清这一点。我想创建一个链接,淡出一些 id 为“sample”的元素:
url应该是什么才能执行JS?它应该是控制器中名为“javascript”的新操作,因此它可以访问 javascript.js.erb 中的 JS,其中包含:
此外,关于 ujs 的第二个问题与向 JS 传递参数有关(本例中为超时)。我可以写:
但不知道如何在 javascript 中访问数据超时。
我正在使用 Rails 3.0.5、JQuery 1.5.2 和 jquery-ujs。
ruby-on-rails-3 - Rails3 的不显眼的 JavaScript 驱动程序
我花了几个小时寻找 Rails3 dojo-toolkit UJS-driver 但我没有运气。Google、github、dojo 官方网站和不同的博客对我没有帮助。
似乎 rails3 实际上只编写了三个驱动程序。这些是我找到的驱动程序:
两位官员:
- Prototype-UJS(rails 3.0 中的默认值)。
- jQuery-UJS(可选,它将是 rails 3.1 中的默认选项)。
两个非官方:
我们可以使用现有的 ujs-drivers 来完成这个列表。
ruby-on-rails - Rails 3简单的AJAX删除不起作用,因为authentity_token没有随请求一起发送
我正在提交一个简单的 ajax 删除请求,如下所示:
请注意,由于所有页面中都包含 csrf_meta_tag 标记,因此具有请求的页面包含authentity_token。
当我查看日志时,我发现删除请求缺少authentity_token:
在 2011-04-22 11:21:21 -0700 开始 DELETE "/invitations/5" for 127.0.0.1 由 InvitationsController#destroy 作为参数处理:{"id"=>"5"}
现在,如果我从代码中删除“:remote =>:true”,即我执行常规页面加载删除工作,我在日志文件中看到以下内容:
在 2011-04-22 12:52:19 -0700 开始 POST "/invitations/10" for 127.0.0.1 由 InvitationsController#destroy 作为 HTML 参数处理:{"authenticity_token"=>"qlT8uX/WGQeOQSmVZzw1v8rFdSTHDRbzNY0zpSc9mV0=", "id" =>“5”}
为什么在 AJAX 情况下是 DELETE 而在非 AJAX 情况下是 POST?为什么 DELETE 不包含authenticity_token?
谢谢你的帮助。
ajax - Rails 3 + UJS 使用 Ajax 进行远程调用并渲染生成的 JSON 对象的简单示例
我正在尝试在我的 Rails 3 应用程序中添加一些 Ajax 功能。
具体来说,我想要一个按钮,该按钮将提交 Ajax 请求以调用我的控制器中的远程函数,该函数随后查询 API 并将 JSON 对象返回到页面。
收到 JSON 对象后,我想显示内容。
所有这些都使用新的 Rails 3 UJS 方法。在某个地方有一个很好的例子/教程吗?我一直无法在谷歌上找到一个。一个使用按钮作为入口点的简单示例(即,用户单击按钮开始此过程)也可以。
编辑 让我用不同的方法试试这个。我想让这个按钮查询一个返回 JSON 的外部 API,并在页面上显示该 JSON。我什至不知道从哪里开始。按钮本身是否查询外部 API?我是否需要通过控制器,让控制器查询外部 API,获取 JSON,然后将 JSON 返回到此页面?如何显示/访问此 JSON 的内容?老实说,我找不到一个很好的 Rails 3.x 示例来说明如何处理 JSON ......