问题标签 [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.

0 投票
2 回答
326 浏览

ruby-on-rails-3 - rails 3.1 用主干升级,找不到 ujs 和 remotipart 文件

几周前我升级到 Rails 3.1.3,并移动了一堆东西来使用主干。

大多数情况下,事情进展顺利,但我刚刚意识到 rails-ujs.js 文件和 remotipart.js 文件不在 assets 目录中。

我在旧public/javascripts文件夹以及其他任何地方都在寻找它们,但没有找到它们。

我似乎也无法在 git repos 中找到文件。有没有地方可以用 Javascript 下载这些文件?还是它们需要由rails生成?有没有办法让它们再生?

---------------这可能是我的错误 ----------------------------

我刚刚意识到,打包资产后,您不能只从视图源打开文件,它们都显示为不存在。

0 投票
1 回答
257 浏览

jquery - 如何在rails ujs中使用实例变量?

这是我之前在html.erb中所做的:

大多数情况下,我会将脚本标签放在content_for块中。

现在,当我想不显眼时,我不能在html.erb中有任何脚本标签。该脚本位于一个 javascript 文件中。但是我如何将@value_from_instance传输到 javascript 文件?

将其存储在数据属性中是唯一的选择吗?

我也想在页面加载时执行此操作,而不是为此目的在 ajax 请求中执行此操作

0 投票
1 回答
786 浏览

jquery - 重新绑定 js 以动态插入:rails 中的远程表单

我在 rails 3.2 中使用标准的 jquery-rails 不显眼的方法。

如果您在页面上有一个带有:remote => true. 但是,如果您有一个 ajax 操作在页面上插入一个新表单怎么办。ajax 绑定似乎没有重新附加。

有没有办法告诉rails UJS“重新绑定”到页面上的所有远程表单?

顺便说一句,这对于 link_to :remote 等也是一样的。谢谢!

0 投票
2 回答
850 浏览

ruby-on-rails - 用于动态添加内容的 Rails UJS

我正在使用带有原型 ujs rails.js 脚本的 Rails 3.0。

在页面加载后,我有一些link_to "...", :remote => true链接被添加到页面中,因此在rails.js将 ujs 事件附加到所有a[data-remote]链接之后。

如何让 rails.js 重新扫描新链接?

rails.js 似乎由一个匿名函数组成,所以我不能直接调用它。

我能想到的唯一方法是将所有 rails.js 包装在我自己的函数中,然后当我添加新链接时,我可以在页面加载*和*时调用。

这似乎是一种合理的方法,但我犹豫不决,因为我不敢相信我是第一个遇到这个问题的人并且没有标准的方法来做到这一点......

0 投票
0 回答
214 浏览

jquery - 使用 UJS 渲染部分时出现格式错误的 HTML

我在一个页面中有一个 ajax 调用,它在控制器中创建一个 Goal 对象,然后呈现 _create.js.erb:

这是 _show_new_goal.html.erb 部分:

此部分呈现的 HTML 已损坏:

编辑 1 当我不使用部分包含 _show_new_goal.html.erb 部分来呈现表单时,会返回格式正确的 HTML。IE 这将返回格式良好的 HTML:

返回的 HTML:

0 投票
1 回答
223 浏览

ruby-on-rails - 带有 URL 参数问题的 Rails UJS

我有一个基本的工作 Rails 应用程序,我非常依赖 URL 参数来显示或不显示逻辑。我能够使用 UJS 和 link_to remote => true 对其进行 ajaxify,但是当我单击这些链接时,显示的 URL 没有更新(这是有道理的)并且其他部分无法读取 URL 参数

例如,在index.html.erb(在 UJS 之前,你可以看到它是如何工作的),

  1. 我的导航栏有多个:category 的 link_to,就像这样

    "top10", :action => "index", :category => catname) %>
  2. 如果 URL 中有 params[:category],我会在左侧显示一个列表,当我单击此列表中的 ID 时,它将显示右侧 DIV

  3. 如果没有参数,它将呈现我所说的登陆页面(某种主页)

这现在效果很好,但是如果我将 remote => true 添加到我的导航栏链接,它将适用于左侧 div,但#3(登录页面)将始终显示,因为由于某种原因它不会看到 URL 参数。此外,由于显示的 URL 始终相同,我的所有 link_to_unless(params...) 都将不起作用。

与 USJ:

index.html.erb

index.js.erb

0 投票
2 回答
24495 浏览

ruby-on-rails - Rails 3 远程表单:如何指定内容类型?

我正在使用 Rails 3.2,我有一个表单,我希望它通过 ajax 发布并让控制器返回 json。

我正在使用这样的 form_for 助手:

我的对象控制器创建方法如下所示:

表单按预期提交。但是控制器返回的是 html,而不是 json!

使用 firebug 检查请求,并确定将 ajax 请求上的 Content-Type http 标头设置为 application/html。

围绕此的文档非常稀疏, :format => :json 似乎只是将“.json”附加到表单操作中,实际上并未修改任何 http 标头。

我也试过 :content_type => :json 没有效果。

我不能简单地对控制器进行硬编码以返回 json,因为在其他地方我确实希望它返回 html...

那么有人知道在使用 form_for 时如何告诉控制器渲染 json 吗?

谢谢你的帮助

0 投票
1 回答
236 浏览

ruby-on-rails - 如何使用 rails3.1 和 jquery 处理 Ajax 返回的数据

我正在使用 data-remote 和 data-URL 通过 jquery ujs 进行 Ajax 调用,它正在工作。

但是,我无法理解如何处理返回的值。

例如,我有一个返回一些 HTML 的控制器操作 - 当 Ajax 调用完成时,如何附加一个 JS 函数(我假设)以替换现有 div 中的 HTML?我已将数据类型设置为:html btw。

我可以通过嗅探网络流量看到 HTML 正在返回。

我已经通过编写自己的 Ajax 调用(而不是使用 jquerys ujs 版本)让它工作,但感觉好像我重新发明了轮子 - 但我找不到如何使用 jquerys data-remote 进行调用对我来说,然后让它更新一个 div (例如)。

谢谢,

伊恩

0 投票
3 回答
4606 浏览

ruby-on-rails - Rails UJS link_to :remote 执行 AJAX GET 和普通GET

编辑:

除了以下有用的评论之外,Steve Schwartz 的两篇优秀文章清楚地解释了一切:

Rails 3.2.2 / jquery-rails 2.0.1 (使用 jquery 1.7.1)

我有发送 AJAX 请求以将其他文件上传字段添加到表单的链接。 与页面相关的所有内容都可以正常工作- 从服务器检索新的表单字段 HTML 片段并将其附加到表单内的 div 中。

然而,

服务器收到两个 GET 请求。一是AJAX请求;另一个似乎是“正常”的锚元素 GET。我预计 Rails UJS 会停止“正常”GET。

我应该自己禁用正常的链接操作吗?有人可以解释我误解了什么,以及我应该做什么[以防止第二个请求]?

我见过这个问题:Rails 3 UJS - controller被link_to :remote 调用两次。因此,我尝试更改资产管道编译config.assets.debug = false,但没有效果。此外,这不是双 AJAX GET 请求,所以我认为这是一个不同的问题。

谢谢你的帮助!

服务器日志片段:

浏览器 HTML:

看法:

控制器的咖啡脚本:

0 投票
1 回答
203 浏览

jquery - Rails 3.2 UJS -> 它可以为我获取动态 URL 的 ID 吗?

我需要为资源构建 POST url,而我添加 remote-true 的项目的 val() 将是 URL 资源中的 ID。是否有这样做的rails捷径或者我只需要这样做

在 jQuery ajax 调用中?