Lea*_*RoR 7 ruby ruby-on-rails ruby-on-rails-3
对于我的表格我使用我的Product模型:
class Product < ActiveRecord::Base
attr_accessible :purchase_date, :send_to_data
end
Run Code Online (Sandbox Code Playgroud)
在我的表单上: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 %>
Run Code Online (Sandbox Code Playgroud)
这对我不起作用,我的数据库没有标记为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"}
Run Code Online (Sandbox Code Playgroud)
有没有办法将它映射到对象,如购买日期呢?
据我所知,你混淆了FormHelper和FormTagHelper.根据文档,您使用Form标签助手
(FormTagHelper)提供了许多创建表单标记的方法,这些方法不依赖于像FormHelper那样分配给模板的Active Record对象.
这意味着对于基于ActiveRecord的表单,您需要使用FormHelper(及其radio_button辅助方法).
使用radio_button_tag表单标记帮助程序的代码
<%= radio_button_tag(:send_to_data, 1) %>
<%= radio_button_tag(:send_to_data, 0) %>
Run Code Online (Sandbox Code Playgroud)
生成以下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" />
Run Code Online (Sandbox Code Playgroud)
和radio_button代码形成帮助
<%= radio_button("product", :send_to_data, 1) %>
<%= radio_button("product", :send_to_data, 0) %>
Run Code Online (Sandbox Code Playgroud)
产生:
<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" />
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |