首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据从Ruby(rails)代码发送到javascript/jquery

将数据从Ruby(rails)代码发送到javascript/jquery
EN

Stack Overflow用户
提问于 2012-03-19 05:17:47
回答 1查看 1.6K关注 0票数 0

我最近开始了一个涉及ruby on rails/javascript/jquery的项目。我对这一切都很陌生。我所参与的部分是这样的。用户点击一个按钮。将打开一个对话框,用户将在其中输入要搜索的术语。使用这个术语,我将通过查看xml来构造URI。然后我会做一个REST调用。响应将是一个XML文件。我将解析它,并在用户输入要搜索的术语的同一对话框中显示数据。

我正在使用JQuery创建一个对话框。我正在用ruby代码(Helper类)做解析和REST调用。我没有使用模型和控制器。现在我需要将数据从helper方法发送到erb文件,在那里我将以表格的形式显示数据。输出将如下所示

string11 string12 string13

string21 string22 string23

string31 string32 string33

代码语言:javascript
运行
复制
.        .         .
代码语言:javascript
运行
复制
.        .         .

现在,在ruby代码中,我为每一列创建了3个数组。我不知道如何将数据从ruby发送到html/javascript。如果有更好的方法做到这一点,那么请让我知道。对于ex:与其作为3个单独的数组发送,不如作为xml/json发送?或者任何其他的建议都会很有帮助。主要是我不了解如何将这些数据发送到erb文件。提前谢谢你。

编辑:添加示例代码

Javascript/Jquery -

单击按钮时,我想调用erb文件中的拼音方法例如:<%= getUserList%> erb文件也有其他javascript/html代码来显示其他内容。

在helper方法中,我有getUserList方法

代码语言:javascript
运行
复制
def getUserList(search)
uri = create_url(search)
@doc = Nokogiri::HTML(open(uri))
//Doing parsing and other stuffs here
//creating 3 array as mentioned above which needs to be displayed
end

我想要显示上面的数组。我不确定如何将这些数组发送到调用此方法的erb文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-19 09:10:54

在您的控制器中:

代码语言:javascript
运行
复制
def users
  respond_to do |format|
    format.js do
      render(:js => "callback(#{@users.to_json});")
    end
  end
end

在您的HTML中使用类似以下内容来调用它:

代码语言:javascript
运行
复制
<%= link_to_remote "get users", :url => { :action => "users" } %>

有关从Rails操作呈现普通JavaScript的更多信息:http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-vanilla-javascript

这个示例构造了JavaScript,它使用JSON数据在JavaScript代码中调用"callback()“函数。您的回调函数将接收一个易于解析的JSON字符串。如果确实需要,也可以使用to_xml发送XML,但是解析JSON要简单得多,而且速度也快得多。

在本例中不需要帮助器,因为包含数据的JavaScript调用将直接来自您的控制器。没有视图模板,所以你不需要帮助器。获取@users的代码的最佳位置是在用户模型类中。不是活动记录模型,而是普通模型。从远程REST API获取用户的代码可能是一个类方法。(如果您感到懒惰,那么可以在"users“控制器操作中使用REST API响应设置@users。但这并不是Rails的理想用法,因为Rails的全部要点是MVC。)

如果您使用的是jQuery,那么您还可以使用jQuery的getJSON()函数,这样您的控制器将只发送JSON数据,而不使用回调:http://api.jquery.com/jQuery.getJSON/

请注意,这似乎是您正在寻找的简单类型的答案,但对于更复杂的应用程序来说,这并不是真正的最佳方式。目前做这类事情的最好方法是使用像Backbone.js这样的东西。http://documentcloud.github.com/backbone/使用Backbone.js,您可以在JavaScript中定义一个"users“集合,设置该集合的REST URL (它可以是Rails应用程序中的一个URL,它可以中继来自其他一些http://documentcloud.github.com/backbone/的数据),然后您只需在JavaScript中调用users.fetch()来加载数据即可。它非常类似于Active Record,但用于客户端站点。它更好,因为它抽象了流程,并允许您更新和删除记录,以及简单地列出它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9762365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档