2014-01-14 70 views
2

我需要從我的Rails 4應用程序內執行一個JavaScript函數。我試着用ExecJS(https://github.com/sstephenson/execjs)沒有任何成功以下幾點:傳遞參數與ExecJS

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}' 
compiled_function = ExecJS.compile(my_js_function) 
result = compiled_function.call(my_argument) 

原來的JS函數需要一個參數(my_argument),我莫名其妙地需要傳授給它。任何關於如何這是可能的幫助將非常感激!

回答

3

您近距離了。您不應該使用call,您應該使用eval這種方式:

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}' 
compiled_function = ExecJS.compile(my_js_function) 
compiled_function.eval('my_function("heyhey")') 
#=> ehy