2010-05-24 23 views
1

因此,它看起來像RoR,當Ajax(使用form_remote_tag)返回成功代碼時,Javascript也會返回以處理視覺效果。 (這是RJS機制)使用招Ruby on Rails的RJS能否給出靜態Javascript代碼來處理用戶交互?

,我確實看到以下響應:

try { 
Element.update("vote_score", "Score 58"); 
$("vote_score").visualEffect("highlight"); 
} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"vote_score\", \"Score 58\");\n$(\"vote_score\").visualEffect(\"highlight\");'); throw e } 

會有情況的代碼是相當大的(如1或2K),其RJS可以使用某種靜態Javascript已經加載來處理效果?

有沒有其他方法可以使用已經加載頁面的靜態JavaScript?它必須只是原始的Javascript,並使用Prototype的Ajax成功響應來調用靜態JavaScript代碼,或者它可以是一些與RJS相關的Rails機制?

回答

1

你可以讓你的代碼已經在JavaScript文件中,或只是在頁面的頭部,並使RJS調用引用它。返回的代碼可以執行已經在頁面上的函數。

的語法是:

page.call 'function_name', arg1, 'Second arg', 'etc...' 
0

您可以 - 但不能使用RJS或其他RoR輔助方法。通過AJAX向服務器發送請求,並返回在客戶端解析的簡短JSON或XML響應,而不是加載JavaScript代碼。

特別漂亮的圖案使用unobtrusive javascript - HTML除了小部分加載回調(how to use it in rails 3)外,並沒有提到JS。