Ruby on rails 3.2 Rails:确认修改器回调?
我想调用一个javascript函数,该函数将以用户对确认框的响应为条件 例如,我有以下锚:Ruby on rails 3.2 Rails:确认修改器回调?,ruby-on-rails-3.2,unobtrusive-javascript,link-to,view-helpers,link-to-remote,Ruby On Rails 3.2,Unobtrusive Javascript,Link To,View Helpers,Link To Remote,我想调用一个javascript函数,该函数将以用户对确认框的响应为条件 例如,我有以下锚: <%= link_to 'Sign Out', destroy_session_path, confirm: 'Are you sure that you would like to sign out?', method: :delete %> 我是否应该放弃不引人注目的javascript,将自己的jQuery回调绑定到我的锚 或者有没有什么神奇的方法可以将回调函数传递给Rails
<%= link_to 'Sign Out', destroy_session_path, confirm: 'Are you sure that you would like to sign out?', method: :delete %>
我是否应该放弃不引人注目的javascript,将自己的jQuery回调绑定到我的锚
或者有没有什么神奇的方法可以将回调函数传递给Rails url帮助器?我在中没有看到任何关于回调的讨论。通过跟随
链接到源代码,我看到:confirm
修饰符被传递到方法,该修饰符指向最近与Rails捆绑在一起的方法(通过jQuery的不引人注目的javascript)。在这里,我们发现通过使用html中的data confirm
属性,最终用户的响应被传递到名为confirm:complete
的事件
因此,答案似乎是“不,您不能通过url帮助器传递回调”。但您可以在应用程序/javascript
中放置回调以侦听此事件。考虑到我仍在让rails处理事件预防和传播,这似乎是实现我的目标最不引人注目的方式。我等待所有这些发生,然后调用我的函数
$(document).on('confirm:complete', function (e, answer) {
if (answer) {
// user confirmed!
myCallbackFunction();
} else {
// user canceled!
}
});
我也有类似的问题()@迈卡的答案虽然有效,但并不是“Rails3Way”的意思
远程:需要将true选项添加到指向帮助程序的链接中,例如
链接到“注销”,销毁会话路径,远程:true,确认:“是否确实要注销?”方法::删除
在控制器中,更改respond_to
块以回答js
创建一个名称与您的方法对应的js文件,例如destroy_session.js.coffee
app/views/competitions/destroy_session.js.coffee:
希望这能有所帮助在2020年,被接受的答案对我不起作用。我最终做了类似的事情:
$(文档).on('confirm:complete',函数(e){
if(如原始事件详细信息[0]){
//用户确认!
myCallbackFunction();
}否则{
//用户取消!
}
});
jQuery ->
$("form[data-remote]").on "ajax:success", (e, data, status, xhr) ->
$(e.currentTarget).closest('tr').fadeOut()`