2014-01-14 6 views
2

Мне нужно выполнить функцию javascript из моего приложения Rails 4. Я попытался следующие с 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 
Смежные вопросы