2013-01-21 1 views
0

데이터를 내 컨트롤러로 보내는 Ajax 요청이 있지만 데이터베이스에 저장하기 전에 요소를 해시에 추가하려고합니다.레일스 기존 해시에 요소를 삽입하는 방법

내 기존 해시는 다음과 같습니다 : 나는 또한 내가 위의 해시에 추가 할 요소 params[:xposition]params[:yposition]

{"application_field_attributes"=>{"0"=>{"id"=>"10"}}} 

은 다음과 같습니다 있도록 :

{"application_field_attributes"=>{"0"=>{"id"=>"10", "xposition"=>"1", "yposition"=>"0"}}} 

방법 이러는 거니?

편집

내가 드래그 할 수있는 요소는 그리드에 떨어 곳을 추적하기 위해 노력하고 있기 때문에 나는이 일을하고있어 그 이유입니다.

내 아약스 호출에서 나는 grid에 배치 된 일부 "data-id"속성에서 얻는 x 및 y 위치를 전달합니다.

내 컨트롤러 메서드에는 현재 @application.update_attributes(params[:application])이 있지만 xposition 및 yposition을 포함하지 않으므로 해시에 주입하려고합니다.

더 나은 해결책은 update_attributes 명령 다음에 컨트롤러의 x 및 y 위치를 수동으로 업데이트하는 것일 수 있습니다. 당신은 다른 그 작업을 수행 할 수 있습니다

@application.update_attributes(params[:application]) 
@application.update_xposition(params[:xposition]) 
@application.update_yposition(params[:yposition]) 

답변

1

:

그래서 같은 것을 보일 것이다.

예를 들어 xposition 및 yposition을 사용하여 양식에 숨겨진 필드를 추가하는 것이 더 좋은 방법 일 수 있습니다.

당신이하려는 일, x/y 위치가 무엇인지 (모든 응용 프로그램마다 다르고 어디서 왔는지) 알려주십시오.

하지만 귀하의 질문에 대답하려면 :

app_attrs = {"application_field_attributes"=>{"0"=>{"id"=>"10"}}} 
app_attrs["application_field_attributes"]["0"].merge!({ 
    "xposition" => params[:xposition], 
    "yposition" => params[:yposition] 
}) 

하지만 내가 당신이라면 그렇게하지 않을 것입니다.

+0

저는 드래그 앤 드롭 인터페이스를 만들고 있습니다. xposition 및 ypoisition은 드래그 가능한 요소가 삭제 된 곳입니다. – Catfish

+0

그리고 요소를 놓을 때 양식을 제출합니까? – Robin

+0

제출 버튼이 있습니다. 삭제할 수있는 여러 개의 드래그 가능한 요소가 있습니다. 나는 각각의 xposition과 yposition을 추적하려고 노력하고있다. – Catfish

관련 문제