是否可以在哈希中的Rails中的check_box_tag
内传递checked form_for
的值?
以下是表单的非常通用的基本版本:
<%= form_for(:object, :url => { :action => 'create', :id => params[:id]}) do |f| %>
<p>Field_a: <%= f.text_field(:field_a) %></p>
<p>Field_b: <%= f.text_field(:field_b) %></p>
<p>Field_c: <%= f.text_field(:field_c) %></p>
<p>Check boxes:</p>
<% check_box_choices_object_array.each do |s| %>
<%= check_box_tag(s.name, 1, false) %>
<%= .name %><br />
<% end %>
<%= submit_tag("Create") %>
<% end %>
大致输出:
Field_a ___________________
Field_b ___________________
Field_c ___________________
Check boxes:
[] box_a
[] box_b
[] box_c
[] box_d
[] box_e
[] box_f
[] box_g
我的问题是,由于可用的复选框不是数据库中对象表中的实际字段(即我在表单中没有使用check_box(:field)
),因此每个选中的复选框都作为个人传递参数(即"box_a" => "1", "box_b" => "1", "box_e" => "1"
)。我希望他们能够这样通过:
:checked_boxes => {"box_a" => "1", "box_b" => "1", "box_e" => "1"}
这样,我可以使用params[:checked_boxes]
轻松访问它们。
我该怎么做,或者更好的是,有更好的解决方案(我是铁杆新手)?
答案 0 :(得分:0)
我认为如果你将复选框迭代器包装在fields_for :checked_boxes
标签中,你会得到你想要的结果 - 或者至少让你接近你想要的结果。
<%= form_for(:object, :url => { :action => 'create', :id => params[:id]}) do |f| %>
<p>Field_a: <%= f.text_field(:field_a) %></p>
<p>Field_b: <%= f.text_field(:field_b) %></p>
<p>Field_c: <%= f.text_field(:field_c) %></p>
<p>Check boxes:</p>
<%= f.fields_for :checked_boxes do |cb| %>
<% check_box_choices_object_array.each do |s| %>
<%= cb.check_box(s.name, 1, false) %>
<%= .name %><br />
<% end %>
<% end %>
<%= submit_tag("Create") %>
<% end %>
答案 1 :(得分:0)
您可以使用attr_accessor
class Thing < ActiveRecord::Base
attr_accessible :name
attr_accessor :box_a, :box_b, :box_c
end
这样您就可以在表单中调用这些属性。