对于我的表单,我使用的是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"}
有没有办法将它映射到对象,就像购买日期一样?
答案 0 :(得分:8)
据我所知,你混淆了FormHelper和FormTagHelper。 根据文档
,您可以使用Form标签帮助程序(FormTagHelper)提供了许多方法来创建不依赖的表单标记 在分配给模板的Active Record对象上,如FormHelper。
这意味着您需要使用基于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" />
希望这有帮助!
答案 1 :(得分:3)
首先查看此页面form_helpers,此处应采用正确的方式
<%= radio_button_tag(:send_to_data, 1) %>
<%= radio_button_tag(:send_to_data, 0) %>