2011-10-14 5 views
2

fields_for를 사용하여 두 개의 다른 모델을 업데이트하는 양식이 있습니다.모든 필드를 전달하지 않는 fields_for 필드

다음
<%= form_for @cart, :remote => true do |cart| %> 
<%= fields_for @cart.order, :remote => true do |order| %> 
    <%= order.select :country, options_for_select(@country_options) %> 
    <%= order.text_field :zip %> 
<% end %> 
<%= cart.select :shipping_method,options_for_select(@shipping_options) %> 
<% end %> 

가 업데이트 작업에 PARAMS에 포함되어있는 것입니다 : 제출지고있는 fields_for 내부의 요소 만 원래 form_for에 대한 것들에 대한 데이터가 여기에

누락하는 형태입니다

{"_method"=>"put", "utf8"=>"\342\234\223", "action"=>"update", "order"=>{"zip"=>"48360", "country"=>"US"}, "id"=>"1", "controller"=>"carts"} 

왜 shipping_method 필드가 매개 변수에 표시되지 않습니까? 난 당신이 아마 다음과 같은 몇 가지 일을 시도해야한다고 생각

<form accept-charset="UTF-8" action="/carts/3" class="edit_cart" data-remote="true" id="edit_cart_3" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"></div> 
    <select id="order_country" name="order[country]"><option value="US">United States</option></select> 
    <input id="order_zip" name="order[zip]" size="30" value="90001" type="text"> 
    <select id="cart_shipping_method" name="cart[shipping_method]"><option value="FedEx Ground" selected="selected">FedEx Ground: $5.00</option></select> 
</form>  
+0

출력 된 HTML을 표시 할 수 있습니까? –

답변

0

: 여기

생성 된 HTML 양식입니다

<%= cart.select :shipping_method, options_from_collection_for_select(@shipping_options, 'id', 'name') %> 

어디 'name' 표시 할 매개 변수입니다. 그렇지 않으면 양식의 html을 검사 할 것을 제안합니다. 선택 항목은 value 속성이없는 경우, 뭔가는 ERB에 문제가 있습니다

options_for_select 만 2 × n 개의 배열

작동
+0

options_for_select 데이터는 괜찮습니다. html 출력을 보여주는 제 질문을 편집했지만 나에게 잘못된 것 같지는 않습니다 ... – Aaron

0

확인하면 그때는 문제가 발생할 수 있습니다 뭔가 다른, 그것은해야한다고 생각 참조 :

<%= cart.fields_for @cart.order, :remote => true do |order| %> 
관련 문제