我从我的应用程序
获取以下格式的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以提取值。一旦我有值,我需要调用两个表来更新。请指教。感谢
答案 0 :(得分:0)
您可以安装gem 'json'
,它具有易于使用的方法来解析JSON数据(其文档位于https://github.com/flori/json)。
然后你可以阅读你的json:
JSON.parse(string)
将为您提供一个字符串和哈希数组。您可以通过迭代此类数组获取订单号的前两位数,获取与:order
键对应的值,然后取前两位数并使用以下内容将它们转换为整数:
order_no[0,2].to_i