Rails - 从控制器触发 javascript 事件

2024-01-03

我正在考虑实现类似以下的内容,并且想知道a)由于我没有想到的某种原因,这是否可能是一个非常糟糕的主意,b)如果不是 - 是否有现有的gem可以做到这一点。

基本上,我希望能够对来自 Rails 控制器的 JavaScript 事件进行排队,以便在下次渲染时触发所有排队的事件并将其从队列中删除。有点像 flash 机制,但用于事件。所以例如:

在我的控制器中:

def create
  if resource.create 
    add_event('resourceCreated', :id => resource.id)
  end
end

在我的应用程序布局中,类似于:

%javascript
  - @events.each do |e|
    $(document).trigger(#{e.event_name}, #{e.event_data})

有什么想法吗?

Edit:这会很有用,例如当创建项目时,服务器可以重定向到该项目的编辑表单,或者可以重定向到相关控制器的索引操作。这些页面不知道刚刚创建了一个项目。然而,也许我想做一些事情,比如如果项目创建成功则关闭对话框窗口,但如果未成功创建则将其保持打开状态,或者我可能需要了解它的任何其他可能原因。显然不仅与创建相关,这只是我用来说明问题的示例

Edit:赏金奖励给任何以某种方式令人信服地说服我这是一个好/坏主意或提供更好选择的人


我明白你想做什么,但你需要小心地将事情分开。

在这种情况下我会做的是创建一个哈希,然后#to_json在你看来。让我们在你的行动的底部说

控制器

@events = [
   { :type => "item_created", :message => "Woohoo! Item was created"}
]

索引.html.erb

<div>Your usual stuff goes here</div>
<script type="text/javascript" charset="utf-8">
  var events = <%= raw @events.to_json %> // You must make sure it's properly sanitised
</script>

jQuery

$.ready(function() { 
   events.each(function () {
      // ... Do what you need to with this
   });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails - 从控制器触发 javascript 事件 的相关文章

随机推荐

  • Spring框架中的EJB替代品是什么

    我正在尝试学习 Spring Framework 在此之前我曾经使用 EJB 创建应用程序 Web services gt Business Layer gt DAO Layer 数据库 通过以下方式 网页服务 使用 Restful API
  • 在 OneDrive 中创建新文件夹

    多年来一直使用下面的代码 它创建新文件夹 并将其命名为下一个工作日的日期 在其中添加另一个文件夹 名为 VO 代码有两行 fPath 暂停的那个是原来的那个 有了这个 我可以移动我的文件 代码仍然会根据 ThisWorkbook 的位置创建
  • 如何检查 TcpClient 是否已连接?

    当我的客户端应用程序关闭套接字甚至终止时 我的服务器仍然认为它还活着 我什至检查TcpClient Connected http msdn microsoft com en us library system net sockets tcp
  • TypeError:promise.then(...).then(...).then(...).then(...).catch 不是 Node Js 中的函数 [重复]

    这个问题在这里已经有答案了 我收到此错误 但我不知道如何解决它 在 Node js 服务器中 我在 Promise 上使用了一些 then 函数 最后我放置了一个 catch 函数 由于某种原因该函数无法被识别 我在教程的很多地方都看到这就
  • 检查值是否已经存在

    我有一本字典 里面放着我的书 Dictionary
  • Rails 在操作不起作用之前跳过

    我的skip before操作有一些问题 class ApplicationController lt ActionController Base protect from forgery with exception before act
  • Lambda 上的 AWS SES - 无法(静默)发送电子邮件

    我正在尝试使用亚马逊服务 questions tagged amazon ses服务于AWS lambda questions tagged aws lambda以便向经过验证的收件人发送电子邮件 我正在跟进this https aws a
  • OpenCV 是否具有处理 sRGB 色彩空间中非线性的函数?

    我想知道 OpenCV 是否有处理 sRGB 颜色空间中非线性的函数 假设我想将 JPEG 图像从 sRGB 颜色空间转换为 XYZ 颜色空间 正如本条中所规定的维基页面 https en wikipedia org wiki SRGB S
  • iOS 9 Segue 导致应用程序冻结(未引发崩溃或错误)

    我已经在这个应用程序上工作了几个月 从我记事起 我就从来没有遇到过 segues 的问题 调用方面代码不变performSegueWithIdentifier但自从我最近更新了 Xcode 7 和 iOS 9 以来 我一直无法解决这个问题
  • 使用 CUDA 并行处理将彩色图像转为灰度图像

    我正在尝试解决一个问题 我应该将彩色图像更改为灰度图像 为此 我使用 CUDA 并行方法 我在 GPU 上调用的内核代码如下 global void rgba to greyscale const uchar4 const rgbaImag
  • c# 蓝牙 LE - 写入配置错误 - ValueChanged 从未调用

    因此 我尝试将我的 C WPF 程序连接到 BLE 设备 这是连接到设备的代码 private async Task ConnectToWatcher DeviceInformation deviceInfo try get the dev
  • 当 XSLT for-each 处于循环中时。如何根据其他 XML 值向该 XML 添加属性或节点。使用 XSLT

    任何人都可以帮我解决这个问题吗 我有一个 XML 并根据某些条件过滤值 将过滤后的 xml 存储在变量中 在过滤条件时 我尝试向过滤后的 xml 添加属性或节点 但它对我不起作用 输入 XML
  • Java 中的委托与回调

    我对 Java 中的委托和回调术语有一些误解 class MyDriver public static void main String argv MyObject myObj new MyObject definition of Help
  • 节点:通过服务帐户的 Google Analytics 数据

    Update 我已经把代码变成了NPM模块 https www npmjs com package ga service acct 我已经通过自己的努力创建了一个服务帐户的 JWT 令牌 https developers google co
  • 组件渲染过早

    我正在尝试创建一个 PrivateRoute HOC 来测试用户是否已通过身份验证 检查 redux 存储中是否存在 auth 然后再将其发送到实际路由 问题是私有路由在我的身份验证出现在 redux 存储中之前完成 console log
  • k-means 使用从 minhash 生成的签名矩阵

    我在文档及其木瓦上使用了 minhash 从这些文档生成签名矩阵 我已经验证签名矩阵可以很好地比较已知相似文档 例如 关于同一运动队的两篇文章或关于同一世界赛事的两篇文章 的杰卡德距离 从而给出正确的读数 我的问题是 使用这个签名矩阵来执行
  • JQuery Mobile 将 2 个元素的宽度设置为 80% 和 20%

    我正在使用 JQuery Mobile 并尝试使用设置两个元素的宽度ui grid a如下面的代码所示 结果是 2 个元素 其宽度等于50 50 我希望我的输入文本宽度是80 我的按钮是20 在同一行 怎么能做到这一点呢 div class
  • 如何避免 expr 溢出。 A B C D

    我需要计算一个如下所示的表达式 A B C D 其中它们的类型是 signed long long int A B C D 每个数字都可以很大 不溢出其类型 尽管A B可能会导致溢出 同时表达A B C D可以非常小 我怎样才能正确计算它
  • 如何使用 AngularJS 访问浏览器控制台中的 $scope 变量?

    我想访问我的 scopeChrome 的 JavaScript 控制台中的变量 我怎么做 我也看不到 scope也不是我的模块的名称myapp在控制台中作为变量 在开发人员工具的 HTML 面板中选择一个元素 然后在控制台中输入 angul
  • Rails - 从控制器触发 javascript 事件

    我正在考虑实现类似以下的内容 并且想知道a 由于我没有想到的某种原因 这是否可能是一个非常糟糕的主意 b 如果不是 是否有现有的gem可以做到这一点 基本上 我希望能够对来自 Rails 控制器的 JavaScript 事件进行排队 以便在