2013-07-25 3 views
0

응용 프로그램에 데이터를 입력 할 테이블 기반 양식이 있습니다. 각 <tr>은 추가하려는 모든 항목에 대해 Javascript를 통해 동적으로 추가됩니다. 그러나 데이터 게시 관리 방법을 알 수 없습니다. 예를 들어,이 있습니다Sinatra/Datamapper : 테이블 형식 구문 분석

<tr> 
    <td><input type="text" name="name1"></td> 
    <td><input type="text" name="value1"></td> 
</tr> 
<tr> 
    <td><input type="text" name="name2"></td> 
    <td><input type="text" name="value2"></td> 
</tr> 

내가 얻는 params은 다음과 같습니다

{ "name1" => "derp", "value1" => "herp", "name2" => "Edward James Olmos", "value2" => "Boss voice"} 

어떻게 DataMapper 객체에 있음을 구문 분석?

답변

1

동적으로 추가 된 모든 필드가 하나의 컬렉션으로 전달되도록 여기에 '배열 된'이름을 사용하는 것이 좋습니다. 이 배열의 이름으로 접근하는 방법은 두 가지가 있습니다, 하나 당신은 자신을 번호 않습니다

<tr> 
    <td><input type="text" name="array_of_names[2]"></td> 
    <td><input type="text" name="array_of_values[2]"></td> 
</tr> 

(그리고 자바 스크립트 전역 변수로 지금 - 투 --추가 될 수를 추적) 참조 그러면 얻을 수있는 params 구조는 서버 측에서 관리하고 연결하는 것이 훨씬 쉬울 것입니다. '그것이 약간 더 어려울 것 프론트 엔드 측 코드를 쉽게 동안

<tr> 
    <td><input type="text" name="array_of_names[]"></td> 
    <td><input type="text" name="array_of_values[]"></td> 
</tr> 

가 PARAMS 통과 해시 원 (서버 측 값 이름을 연결 :

또는이 번호 매기기를 생략하고 사용 t에는 숫자 키가 있음).

관련 js 코드는 "javascript add form fields"로 검색하여 쉽게 찾을 수 있습니다. 다음은 번호가 지정된 필드 이름의 예입니다. http://www.randomsnippets.com/2008/02/21/how-to-dynamically-add-form-elements-via-javascript/