2011-12-11 60 views
7

對於自己的狀態,我用我的Product型號:如何傳遞單選按鈕標籤中的對象?

class Product < ActiveRecord::Base 
    attr_accessible :purchase_date, :send_to_data 
end 

在我的形式我有:purchase_date正常工作,當我創建多個產品,而且還想讓radio_button_tag做同樣的:

<%= form_tag create_multiple_products_path, :method => :post do %> 

    <%= date_select("product", "purchase_date") %> 

    <%= radio_button_tag(:send_to_data, 1) %> 
    <%= radio_button_tag(:send_to_data, 0) %> 


    <% @products.each_with_index do |product, index| %> 
    <%= fields_for "products[#{index}]", product do |up| %> 
     <%= render "fields", :f => up %> 
    <% end %> 
    <% end %> 

    <%= submit_tag "Done" %> 
<% end %> 

這不適合我,我的數據庫不會標記爲false或true。

我認爲問題在於"send_to_data"的參數。與"purchase_date"不同,它沒有找到對象(產品)。

{"product"=>{"purchase_date(2i)"=>"12", "purchase_date(3i)"=>"11", "purchase_date(1i)"=>"2011"}, 
"send_to_data"=>"1", 
"products"=>{"0"=>{"product_name"=>"Test", "price"=>"23", "product_store"=>"13", "exact_url"=>""}, 
"1"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"2"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"3"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"4"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}}, "commit"=>"Done"} 

有沒有辦法將它映射到像購買日期那樣的對象?

回答

8

至於我可以看到你迷惑FormHelperFormTagHelper。 您使用表單標籤幫手,而根據文檔

(FormTagHelper)提供了一些方法來創建不分配給像表單助手做模板的Active Record對象上依靠 表單標籤。

這意味着基於ActiveRecord的表單需要使用使用FormHelper(及其radio_button輔助方法)。

代碼radio_button_tag形式標記輔助

<%= radio_button_tag(:send_to_data, 1) %> 
<%= radio_button_tag(:send_to_data, 0) %> 

生成以下HTML:

<input id="send_to_data_1" name="send_to_data" type="radio" value="1" /> 
<input id="send_to_data_0" name="send_to_data" type="radio" value="0" /> 

和代碼與radio_button形式幫手

<%= radio_button("product", :send_to_data, 1) %> 
<%= radio_button("product", :send_to_data, 0) %> 

產生:

<input id="product_send_to_data_1" name="product[send_to_data]" type="radio" value="1" /> 
<input id="product_send_to_data_0" name="product[send_to_data]" type="radio" value="0" /> 

希望這有助於!

3

檢查此頁form_helpers第一,在這裏,正確的方法應該是

<%= radio_button_tag(:send_to_data, 1) %> 
<%= radio_button_tag(:send_to_data, 0) %> 
+0

這很奇怪。我確實嘗試過,仍然得到相同的結果。我可以在我的模型中訪問它,並且我知道我的產品表具有/檢測它,因爲我的種子數據顯示列和標記爲真/假的產品,但創建它們時似乎並不這樣做。 – LearningRoR