Javascript and Rails Interaction

Javascript and Rails Interaction

本文关键字:Interaction Rails and Javascript      更新时间:2023-09-26

我是一个相当新的web开发人员,在思考Rails应用程序的所有部分如何交互时遇到了一些问题。我使用的是rails 3.2

基本上,我希望做的是从远程网站检索包含一些唯一格式数据的响应。然后需要解析这些数据来提取重要的部分,然后这些部分需要用于在我的页面上生成部分。

在我使用的控制器中:

require 'net/http'
@result = Net::HTTP.get(URI.parse("http://remote.website.toget.data"));

然后在不生成部分的情况下初始呈现页面。之后,我使用脚本标记将@result解析为数组,其中包含我需要的数据:

var myData='<%= @result %>';
var myDataCleaned = myData.replace(/%20/g, " ");
while(gameTeams = regexGameTeams.exec(myDataCleaned)){
myTeams[count] = new Array();
myTeams[count][0] = gameTeams[1];
myTeams[count][1] = gameTeams[2];
count++;
}

现在我很困惑如何使用这些数据来生成我的部分。研究表明,将其作为local传递给<%=render"partial"%>调用是不可能的,那么我该如何进行此操作呢?我的猜测是,我做这件事的方式不对,需要在呈现页面之前以某种方式进行解析,然后通过控制器传递结果,但我似乎无法解决。如果有人能给我指明正确的方向,我将不胜感激!!

如果你是对的,你应该在ruby中解析数据(在进行远程调用的控制器中(,并根据提取的数据构建你的部分
数据的格式是什么?

如果是json,您可以只使用parsed_data = JSON.parse(data)

但是,即使是不同的格式,ruby也使解析相对容易。

如果你的目标是在分部中为Javascript提供对Rails/Ruby变量的访问,那么在分部中你会让它输出JS代码,比如:

some_js_var = <%= some_local_ruby_var_that_is_in_scope %>

some_js_var = <%= @some_instance_ruby_var_that_is_in_scope %>

在不向服务器发出请求的情况下,您无法将Javascript变量传递到Rails部分,因此您需要在服务器上进行响应解析等,或者如果由于某种原因必须使用Javascript进行解析,那么您可以在Rails端设置一些JSON服务来处理来自JS端的JSON请求,但这有点傻。