在Ruby&中复制计算的最佳方法是什么? JavaScript的?

时间:2009-05-27 19:46:59

标签: javascript ruby json function

我有一个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函数。它看起来像一个,但它有双引号。

我在这里咆哮错误的树吗?我觉得有一些非常简单的方法可以做到这一点,但我完全错过了它。 :)

2 个答案:

答案 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

让它将结果作为文本呈现在控制器方法中。