2011-04-11 32 views
0

回到Rails 2,link_to_remote中有一個:condition選項,它允許你指定一些必須返回true的javascript或遠程請求不會被髮送。但是,在rails 3中,這個選項似乎已被刪除。Rails 3遠程鏈接:condition和mootools

我想要做的是有一個ajax表單,但它需要在瀏覽器上提交之前進行驗證(這是非常非標準的驗證)。基本上我需要能夠設置一些有條件的JavaScript表達式,以防止在驗證失敗時提交表單 - 與rails 2中的:condition選項相同。有沒有什麼方法可以在rails 3中再次實現相同的功能?

我正在使用mootools與rails.js的mootools版本。我查看了mootools的rails.js文件,並沒有看到任何看起來像它會讓我指定一些有條件的JavaScript的東西。我錯過了什麼嗎?

*注:我只是通過源代碼來查看原型中編寫的默認rails.js文件。在這個文件中有有下面幾行:

var event = element.fire("ajax:before"); 
if (event.stopped) return false; 

這看起來像在原型版本,你可以阻止通過聽取被髮送的請求「AJAX:之前」事件,並在監聽停止事件。然而,我在mootools rails.js代碼中找不到這樣的東西,所以也許這是mootools rails.js文件中的一個錯誤?

回答

0

link_to_remote已從Rails 3中刪除。現在是link_to :remote => true。如果你想要做一些JS驗證,你可以使用這樣的事情:

<%= link_to "test", '/test', :id => "test-link", :remote => true %> 

,並在application.js中添加驗證(在我的例子是原型它不是通過MooTools做的一個問題。我猜的):

document.observe("dom:loaded", function() { 
    $('test-link').observe('click', function(event){ 
    if your_validation_magic 
     event.stop(); 
    }); 
}); 

更新: MooTools有這個活動太: https://github.com/kevinvaldek/mootools-ujs/blob/master/Source/rails.js#L131