在ROR中解析JSON并调用2个控制器

时间:2013-08-23 06:21:21

标签: ruby-on-rails json

我从我的应用程序

获取以下格式的JSON
{"list":[{"orderno":"02201308231133","itemno":"w01","name":"t01","amount":"120","status":"done"},{"orderno":"02201308231133","itemno":"w02","name":"t02","amount":"120","status":"done"},{"orderno":"02201308231133","itemno":"w03","name":"t03,"amount":"120","status":"done""}]}

现在我需要从JSON上面做两个任务:首先在列表中按原样添加上面的行,第二个:在上面的情况下从orderno ie02中提取前两个数字并更新另一个表(或调用另一个控制器)提取值的状态(完成)(02)。

我能做第一个任务。控制器代码为:

def create
    lists = params[:list].collect{|list_attributes| List.new(list_attributes)}
    valid,not_valid = lists.partition{|list| list.valid?}

    if not_valid.blank?
      lists.map(&:save)
      @lists = lists
      format.html { redirect_to @list, notice: 'List was successfully created.' }
      format.json { render json: @list, status: :created, location: @list }
    else
      format.html { render action: "new" }
      format.json { render json: @list.errors, status: :unprocessable_entity }
    end
  end

上述方法在DB表中插入行。 现在我无法弄清楚如何在列表控制器中调用create方法之前解析JSON以提取值。一旦我有值,我需要调用两个表来更新。请指教。感谢

1 个答案:

答案 0 :(得分:0)

您可以安装gem 'json',它具有易于使用的方法来解析JSON数据(其文档位于https://github.com/flori/json)。

然后你可以阅读你的json:

JSON.parse(string)

将为您提供一个字符串和哈希数组。您可以通过迭代此类数组获取订单号的前两位数,获取与:order键对应的值,然后取前两位数并使用以下内容将它们转换为整数:

order_no[0,2].to_i