내 응용 프로그램에서 형식 아래에서 JSON을 얻고에게 전화구문 분석 ROR에서 JSON과 2 컨트롤러
{"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을 구문 분석하여 값을 추출하는 방법을 파악할 수 없습니다. 일단 값이 있으면 두 테이블을 모두 업데이트해야합니다. 제발 조언. 감사합니다
을이 라이브러리는 실제보다 더 빨리이다 : 당신은 다음 첫 번째 두 자리 숫자를 가지고 사용하여 정수로 변환, 같은 배열을 통해 반복
:order
키에 해당하는 값을 얻어서 주문 번호의 처음 두 자리를 얻을 수 있습니다 json gem과 comatibility api가 있습니다. https://github.com/brianmario/yajl-ruby –입력 해 주셔서 감사합니다. 또 다른 문제는 추출 된 값으로 다른 컨트롤러로 이동하는 방법입니다. – Gaurav
해당 목록과 관련된 모델이 있습니까? 그렇다면 일단 데이터를 db에 저장하면 원하는 모든 컨트롤러에서 액세스 할 수 있습니다. 그렇지 않다면 왜 안 되겠습니까? – Miotsu