【问题标题】:Help with JSON in rails帮助使用 Rails 中的 JSON
【发布时间】:2010-07-12 10:34:05
【问题描述】:

我的后端是我的 Rails 服务器,它将 JSON 数据发送到我的前端。在前端,我使用 javascript 和 jQuery 来处理我的 JSON 数据并显示其中的一些数据。
现在,用户可以根据显示的数据输入一个数字。
因此,根据用户的输入,对先前收到的 JSON 数据进行某些更改,并将其作为正确编码的 JSON 发送回我的后端。

我的问题是如何在服务器上处理这些 JSON 数据并存储用户填写的输入?

【问题讨论】:

  • 为什么必须以 JSON 格式发回?将 JSON 转换为 http POST 请求,然后将其发回。 Rails 已经知道如何做到这一点,而且我很确定它在 jQuery 中不会太棘手。
  • 公开 JSON API 可以提供更通用的接口,而不仅仅是满足基于浏览器的客户端接口,有时只支持一种类型很方便,特别是如果浏览器将大量面向 AJAX 时。

标签: ruby-on-rails json


【解决方案1】:

不知道为什么需要将数据作为 JSON 发送回来,因为 Rails 可以正常处理表单数据,正如 thomasfedb 所说。但如果您确实需要,您可以使用 jQuery serializeArray 方法,然后快速从数组转换为 JSON。请参阅以下内容:

http://api.jquery.com/serializeArray/#comment-47479466

如果你走这条路,你可以使用 JSON2.js 中的 stringify 方法从你的对象创建有效的 JSON 数据。

http://www.json.org/js.html


编辑:

抱歉,刚刚意识到您已经做到了这一点!应该正确阅读问题。

您可以使用这个JSON ruby implementationparse 的JSON 数据:

JSON.parse(json_data, {:symbolize_names => true})

然后只需使用ActiveRecord::Base 中的save 方法来保存您的记录。

【讨论】:

  • @joecardon :- 我有一些缺失的链接。我以前从未这样做过,即以 JSON 格式将数据发送回服务器。我尝试了您的命令,但出现以下错误: JSON.parse({"solutions":[{"name":"I"},{"name ":"On"}],"features":[{"name":"Composition"}]}) 给我错误:SyntaxError:编译错误(irb):4:哈希(irb)的奇数列表:4:语法错误,意外 ':',期待 '}' 但是,JSON 数据是有效的...我通过 jsonlint.com json 解析器传递它,它返回有效的 json。
  • 您需要将表单中的 JSON 数据作为字符串传递给 JSON.parse: JSON.parse('{"key":"value", "another_key":23}', {: symbolize_names => true})
【解决方案2】:

假设您使用JQuery.post() 将数据发送到服务器,其中dataType'JSON'

然后在你的控制器中你可以这样做:

MyController << ApplicationController

  def my_action
    @data = params[:data] // client data available as a Ruby Hash object

    // Process data into @result (for example)

    respond_to do |format|
      format.json { render :json => @result.to_json }
    end
  end

end

或者您可以省略上面的 render 语句并提供一个视图(称为 my_action.json.erb),您可以在其中格式化 JSON 响应。

【讨论】:

  • - 我无法理解你在说什么。我的问题是我以某种方式处理用户输入,然后我必须将该数据发送回服务器,在那里我可以再次处理它并采取相应的行动。我向服务器发送数据的数据格式是 JSON。我正在客户端进行 jQuery.post 调用。
  • @银勺。我想我明白了。我展示的是用于处理传入 JSON 并将 JSON 响应回客户端的概要服务器端逻辑。您还需要其他什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多