2011-08-01 68 views
0

我想用两个参数来做我自己的确认对话框。jQuery&Rails 3 - 回调

function myAlert(message, adr) { 
    jConfirm(message, 'Confirmation Dialog', function(answer) { 
     if (answer){ 
      window.location = adr; 
     } 

    }); 
} 

$(document).ready(function() { 
    $.rails.confirm = function(mess, mess2) { 
     return myAlert(mess, mess2); 
    } 
}); 

,并考虑:

<%= link_to 'Delete', 
     {:controller => 'controller_name', :action => 'action_name'}, 
     :confirm => {"xxxxxxx", "aaaaaaaa"} %> 

而在警报消息我会得到如下: xxxxxxxaaaaaaaa

我做错了吗?为什么我没有得到只有xxxxxxx?为什么字符串合并?

PS:第一个参数在jConfirm函数显示消息确认窗口。

回答

1

我相信:confirm只是一个字符串参数。我有点惊讶,因为:confirm => {"xxxxxxx", "aaaaaaaa"}应该抛出一个语法错误,如果我没有弄错。

如果你想传递两个参数,你可以将它们存储在单独的数据属性,并推出自己的确认方法,像这样:

<%= link_to 'Delete', 
     :controller => 'controller_name', :action => 'action_name', :class => "confirm", 
     :data-foo => "bar", :data-bar => "foo" %> 

$('a.confirm').click(function(){ 
    return myAlert($(this).data('foo'), $(this).data('bar')); 
}); 

或者用JS你英文逗号分隔您的论点和其拆分:

… :confirm => "foo,bar" … 

$.rails.confirm = function(message) { 
    var messageParts = message.split(','); 
    return myAlert(messageParts[0], messageParts[1]); 
} 
+0

愚蠢的问题 - 我想你的第一个暗示做到这一点,但我得到的错误**未定义的局部变量或方法'#为酒吧” <#<类别:0x1036b9f50>:0x1036b7bd8> * *(我是新手) – user1946705

+0

试试':'data-foo''而不是':data-foo'。 – polarblau