2011-08-01 112 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