2

我写了一个ruby函数,想把它放在js文件中,js函数应该能够调用ruby函数并存储返回值。

是否可以?这个任务怎么做?

4

4 回答 4

2

我认为不可能,有几个原因:

  1. 浏览器不支持 Ruby
  2. JavaScript 和 Ruby 有不同的类型系统,我不知道它们之间的任何接口
  3. 此外,您不能将 JavaScript 代码和 Ruby 代码放在一个文件中,因为此类文件没有 mime 类型

所以我想你应该将你的 Ruby 函数转换为 JavaScript 函数。

或者,您可以将 Ruby 函数实现为服务器 API 的一部分,并通过 Ajax 从 JavaScript 调用它。

于 2012-07-27T07:15:08.853 回答
2

您需要的实现取决于您何时调用 ruby​​ 代码或函数

  1. 是在构建或渲染页面或 js 时?

    然后你可以使用带有 .erb 扩展名的 js。(正如超级工程师所建议的那样)这允许你调用视图和应用程序助手中可用的任何 ruby​​ 代码和函数。

    例如 demo.js.erb

    var arr = "<%= call_function %>"
    
  2. 您需要客户端的功能吗?那么直接调用函数是不可能的,这种场景需要使用ajax。(由 Spernsky Daniel 建议)

于 2012-07-27T08:24:44.837 回答
1

JavaScript 是客户端语言,Ruby 是服务器端语言,它们不能直接相互调用,使用 AJAX 或 WS 代替服务器端和客户端之间的通信。

于 2012-07-27T07:17:14.903 回答
0

那么你可以有js.erb文件。您可以在其中包含 ruby​​ 代码。看看我项目中的这个代码片段。

$("#myModal").modal('hide');
<% if @status == "ok" %>
  <%= add_gritter("We will contact you as soon as possible!", :image => :success, :class_name => "gritter-light") %>
<% else %>
  <%= add_gritter("Something went wrong while saving you request. Please try again!", :image => :error, :class_name => "gritter-light") %>
<% end %>
于 2012-07-27T08:10:11.477 回答