从java脚本函数调用ruby函数

call ruby function from a java script function

本文关键字:ruby 函数 函数调用 脚本 java      更新时间:2024-04-19

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

有可能吗?如何完成此任务?

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

  1. Is是在构建或呈现页面或js时生成的?

    然后你就可以使用扩展名为.erb的js了。(按照超级工程师的建议)这允许您调用视图和应用程序助手中可用的任何ruby代码和函数。

    例如demo.js.erb

    var arr = "<%= call_function %>"
    
  2. 你需要客户端的功能吗?那么直接调用函数是不可能的,在这种情况下需要使用ajax。(Spernsky Danil建议)

我认为这是不可能的,有一些原因:

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

因此,我认为您应该将Ruby函数转换为JavaScript函数。

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

JavaScript是客户端语言,Ruby是服务器端语言,它们不能直接调用,而是使用AJAX或WS在服务器端和客户端之间进行通信。

您可以拥有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 %>