提问人:user502052 提问时间:5/18/2014 最后编辑:Brian Tompsett - 汤莱恩user502052 更新时间:1/20/2020 访问量:1767
如何以 Rails 方式处理 JavaScript 事件(例如“link_to :remote”)?
How to handle JavaScript events (e.g. 'link_to :remote') the Rails Way?
问:
我正在使用 Ruby on Rails 4,我想以 Rails 的方式处理 JavaScript 事件。也就是说,例如,鉴于我有以下内容
link_to('destroy', article_path(@article), :method => :delete, :remote => true)
当我单击上面生成的链接时,我希望 JS 事件通过删除已删除的文章 DOM 元素来更新页面内容。AJAX 响应,无论它是什么,都应该被忽略。success
我知道rails.js文件的存在,但我不知道如何使用它来完成我正在寻找的东西。
答:
5赞
Aliaksandr
5/18/2014
#1
有一个 wiki 页面 https://github.com/rails/jquery-ujs/wiki/ajax 其中包含对 ujs 自定义事件的解释。这是您案例中的一个小示例:
$('a').on 'ajax:success', -> alert 1
更新日期如果要阻止评估 XHR 响应,请将属性添加到远程链接:data-type=text
link_to('destroy', article_path(@article), :method => :delete, :remote => true, 'data-type' => 'text')
评论
0赞
user502052
5/18/2014
谢谢。顺便说一句:如何忽略AJAX响应?也就是说,在成功时,AJAX 响应是重定向到另一个页面,我想忽略该重定向。
0赞
Aliaksandr
5/18/2014
你说你有包含函数的响应者吗?destroy.js.erb
window.location
0赞
user502052
5/18/2014
不,在我的控制器中,我有.我想忽略 上的这种行为。format.js { render :js => "window.location.replace('#{articles_path}');" }
ajax:success
0赞
user502052
5/18/2014
我想我不必更改控制器,我可以直接在回调函数中“忽略”响应(在示例中,它是一个重定向,但它可以是任何内容)。但是如何做到这一点呢?ajax:success
0赞
Aliaksandr
5/18/2014
啊,好吧,我抓住了。我认为最清晰的方法是将属性添加到您的链接中,这样响应就不会被JS评估。data-type='text'
评论