2011-10-14 24 views
2

我有一個窗體,使用fields_for更新兩個不同的模型。對於越來越提交fields_for裏面的元素,但那些原始的form_for的數據丟失Rails 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:

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

爲什麼shipping_method字段沒有出現在params中?

這裏是生成的HTML表單:

<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

我想你應該也許嘗試一些像這樣的事情:

<%= 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| %>