我有一个Ruby on Rails应用程序,我需要在Ruby和JavaScript中复制一些计算。 Ruby用于服务器端,但我还需要使用JavaScript在浏览器上计算学生成绩。
我的第一个想法是使用字符串构建JavaScript函数,将其转换为JSON,将其发送到解码的浏览器并用作普通的JavaScript函数。这听起来对你有用吗?我尝试过像
这样简单的事情def letterGradeCalc "function calcLetterGrade(score) { if( score >= 90 ) { return 'A'; } else if( score >= 80 ) { return 'B'; } else if( score >= 0 ) { return 'F'; } else return ''; }".to_json end
但是当浏览器获取它时,它不是有效的JavaScript函数。它看起来像一个,但它有双引号。
我在这里咆哮错误的树吗?我觉得有一些非常简单的方法可以做到这一点,但我完全错过了它。 :)
答案 0 :(得分:5)
对于那些非常简单的东西,我建议用函数编写一个纯JS文件并包含它。从ruby生成JS听起来像严重的矫枉过正。然后在Ruby中编写相同的函数。
如果它是一个中等复杂的算法,我建议只在Ruby中编写它,并建立一个从JS调用的Web服务。
编辑,在下面的评论中添加被混淆的代码:
function calcLetterGrade(score, lowCutoff, hiCutoff)
{
if( score >= hiCutoff ) { return 'A'; }
else if( score >= lowCutoff ) { return 'B'; }
else if( score >= 0 ) { return 'F'; }
else return '';
}
答案 1 :(得分:2)
如果不是需要快速完成的事情,请将它从JavaScript调用到Web服务器。使用Rails,只需调用
remote_function :url => remote_request_url,
:update => dom_id_to_update
让它将结果作为文本呈现在控制器方法中。