从java脚本函数调用ruby函数
你需要实现取决于当你调用Ruby代码或功能
-
难道是在创建或渲染页面或JS吗?
然后你可以使用带有.erb扩展名的js(如超级工程师建议的) 这允许你调用视图和应用程序助手中可用的任何ruby代码和函数。
如demo.js.erb
var arr = "<%= call_function %>"
你需要从客户端的功能? 然后就不可能直接调用这个函数,你需要为这样的场景使用ajax。 (如Spernsky Danil所建议)
我知道我正在振兴一条旧线索。你写了这个call_function在哪里?假设我想要调用一个控制器方法,我该怎么做? – 2013-09-11 20:01:17
@ MaxRose-Collins它可以是任何可以通过视图访问的有效函数,可以在助手或任何地方,但应该可以在视图中访问 – PriteshJ 2013-09-12 06:56:16
好吧,如果我在application_helper中有助手,我可以从js.erb文件位于assets/javascripts?像这样,var response ='' – 2013-09-12 07:40:49
我认为这是不可能的,有几个原因:
- 浏览器不支持Ruby的
- 的JavaScript和Ruby具有的不同类型系统我不知道他们之间 任何接口
- 你也不能把JavaScript代码和Ruby代码在一个文件中,因为有这样的文件
所以没有MIME类型,我想你应该你的Ruby功能转换为JavaScript的FUNC它在。
或者您可以将您的Ruby功能作为Server API的一部分实现,并通过Ajax从JavaScript调用它。
JavaScript是客户端语言,Ruby是服务器端语言,他们不能直接调用对方,而是使用AJAX或WS代替服务器和客户端之间的通信。
你可以在服务器(node.js)和客户端上的红宝石(如果客户端是一个独立的应用程序,而不是网络浏览器)::) – 2012-07-27 07:21:14
即使这样你不能从另一端调用函数,而不使用tcp/IP通信,仍然有趣,巨魔? – micnic 2012-07-27 07:38:37
那么你可以有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 %>
Javascript是浏览器(客户端)上的运行时环境。我假设你的服务器端环境是Rails,它是一个不同的运行环境(服务器端)。客户端使用HTTP协议向服务器端发出请求。当你说“从JavaScript函数调用ruby”时,你基本上想要做的就是“通过浏览器进行AJAX调用,以便在服务器端执行数据库操作”。一旦你了解这种互动,你将能够搜索正确的地方,并得到适当的相关答案恕我直言。 – 2012-07-27 08:18:24