2013-10-12 2 views
2

레일즈 4에서 간단한 중첩 모델 양식을 얻으 려합니다. 이것은 아마도 매우 간단 할 것이지만 그것을 파악할 수 없습니다.중첩 된 필드가 전송되지 않습니다. 4

<%= f.fields_for :bankaccounts do |bankaccount| %> 
    <%= render 'bankaccount_fields', :f => bankaccount %> 
    <% end %> 

이 잘 작동 심지어 링크 :

<%= link_to_add_association 'add', f, :bankaccounts , :class => "link"%> 

잘 작동

그래서 나는 중첩 된 필드를 만들 수있는 편집보기를 보유하고 있습니다. 클릭하면 필드가 나타납니다.

실제 문제는 양식을 제출할 때입니다. 추가 된 필드에 입력 된 매개 변수를 웹 서버로 다시 보내지 않습니다. 속성 위

"bankaccounts_attributes"=>{"0"=>{"iban"=>"121221", "swift"=>"121212", "id"=>"3"}, "1"=>{"iban"=>"33333", "swift"=>"33333", "id"=>"9"}, "2"=>{"iban"=>"121212", "swift"=>"211212", "id"=>"10"} 

네 개의 은행 계좌를 포함해야합니다 : 양식은 예상대로 이전 BankAccount가 매개 변수를 제출 (어느 곳에서나에 WEBrick 콘솔에서 그들을 볼 수 없습니다).

FWIW : 터보 링크도 사용할 수 없습니다.

EDIT :

<div id="tilit"> 
    <div class="area-form"> 
     <div class="col"> 
      <div class="box-row"> 
      <label for="iban" class="label">Iban</label> 
      <div class="input-row no-italic"> 
       <%= f.text_field :iban, :id => "iban", :class => "input-text" %> 
      </div> 
      </div> 
     </div> 
    <div class="col"> 
     <div class="box-row"> 
     <label for="swift" class="label">Swift</label> 
     <div class="input-row no-italic"> 
      <%= f.text_field :swift, :id => "swift", :class => "input-text" %> 
     </div> 
     </div> 
    </div> 
</div> 

pic of inspect element

EDIT : 디버거 출력 레지 여기 bankaccount_fields 부분의 코드가있다. 파라미터 :

(RDB : 2) @_params { "UTF8"=> "✓", "_method"=> "패치", "authenticity_token"=> "181xsndllcPmpvpMaDi70IXh8SpaSYxs0eiSo19qwfI =" "제조자"= "{" 선불 택시 "=" ","streetaddress "=>" ","zip "=>" ","city "=>"Anne ","RH_nro "=>" ","ytunnus "=> ""= ""= ""= "" ""= ""= ""= ""= "" 3 "},"1 "=> {"iban "=>"33333 ","swift "="33333 ","id "=>"9 "},"2 "=> {"iban "=> "컨트롤러"=> "제작자"= ""121212 ","swift "=>"211212 ","id "=>"10 "}}}"커밋 "=>"TALLENNA " , "id"=> "54"}

하나 이상의 bankaccount_attributes 레코드가 있어야하지만 동적으로 추가되지 않는 레코드 만 포함해야합니다.

저는 몇 시간 째 머리를 긁적 거리며 어떤 도움을 주시면 감사하겠습니다. 문제는 잘못된 형식의 경우

또한,이 미안 내 첫번째 :

+0

link_to_add_association 메소드와 필드를 양식에 삽입하는 코드를 포함 할 수 있습니까? 새로운 입력 필드가 삽입되면 브라우저에서 검사하면 입력란의 요소 ID는 무엇입니까? – cschroed

+0

link_to_add_association이 누에 고치 보석의이 특별한 예에 들어 있다고 지정 했어야합니다. 그러나 nested_forms gem이나 railscasts # 196 중첩 모델 예제를 사용할 때도 동일한 문제가 지속됩니다. 브라우저 소스 코드보기에서 스크린 샷을 추가했습니다. –

+0

값을 서버로 가져 오는 것이 좋습니다. 디버거 보석을 사용하고 컨트롤러 동작에 일시적으로'debugger' 문을 추가하면 매개 변수가 전달되는지 확인할 수 있습니다. 중단 점에 도달하면'params [: producer] [: bankaccounts_attributes]'에 무엇이 있는지 볼 수 있습니다. 올바른 값이 나타나면 @Rich Peck의 제안을 아래에서 확인하십시오. – cschroed

답변

0

당신의 강력한 PARAMS 같은 & 컨트롤러 무엇입니까?

그들은 중첩 된 속성에 대해 다음과 같이해야한다 : 또한

def params 
    params.require(:form_for_variable).permit(bankaccounts_attributes: [:iban, :swift]) 
end 

, 내가 발견 한 당신이

+2

': id'도 포함 시키면 기존 레코드를 갱신 할 때 새로운 레코드를 생성 할 수 있습니다 :'params.require (: producer) .permit (bankaccounts_attributes : [: id, : iban, : swift])'. – cschroed

+1

중첩 된 매개 변수는 모두 괜찮습니다. 거기에 : id가 있습니다. :) 정적 필드와 함께 제출하면 양식이 잘 작동합니다. 여기서 문제는 동적으로 생성 된 필드의 내용이 서버에 제출되지 않는다는 것입니다. –

+0

이 "include the : id"는 이것에 대한 실질적인 답변이라고 생각합니다. – Ben

1

에 양식을 제출하고있는 모델 accepts_nested_attributes_for :bankaccounts을 포함하는 문제를해야합니다 내 응용 프로그램, 아무도이 유용하게 더 이상 찾을 수 있는지 모르겠다면.

HTML 테이블 안에 form_for를 작성했다고 추측합니다. 그렇다면 브라우저가 일치하지 않는 DOM을 생성합니다.양식 입력을 동적으로 생성하는 경우 양식 선택기를 통해 양식 입력을 선택하지 않는 한 양식 내부에 입력하지 않습니다. 따라서 솔루션은 양식을 HTML 테이블 외부에 배치합니다.

+0

나는 또한 이것으로 레일을 만났고, 약 5 시간 이상을 낭비했습니다. DOM 조작을 위해 jQuery를 사용했습니다. 따라서 브라우저 또는 레일이 아닌 jQuery 문제를 말해야합니다. –

관련 문제