从javascript函数调用ruby函数

时间:2012-07-27 07:09:45

标签: javascript html ruby-on-rails ruby client-server

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

有可能吗?怎么做这个任务?

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

    例如demo.js.erb

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

答案 3 :(得分: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 %>