我做了一个复选框数组,但我选择的选项在提交后没有保留检查。
这是表格:
|people|
|id| |name|
1 Bill
2 Steve
3 Mark
4 MrYoshi
这是控制器:
def searching
@people = Person.all
@search = Person.find(:all,:conditions=>['id IN (?)',params[:search_id] ])
end
以下是观点:
<% form_tag :controller=>"person",:action=>"searching" do %>
<% @people.each do |c| %>
<%= check_box_tag "search_id_#{c.id}", c.id.to_s ,params[:search_business].to_s == c.id.to_s %>
<% end %>
<%= submit_tag "SEARCHING" %>
<% end %>
我已阅读此信息http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag
这是一个复选框示例,但未使用数组值:
<%= check_box_tag "example", "2", params[:example].to_s == "2", {:multiple => true} %>
我试过这一行,参数正在发送,但没有选中复选框:
<%= check_box_tag "search_id[]", c.id.to_s ,params[:search_business].to_s == c.id.to_s %>
###Parameters: { "commit"=>"SEARCHING", "search_id"=>["1","2"]
我试过这一行,参数正在发送,但没有选中复选框:
<%= check_box_tag "search_id[]", c.id.to_a ,params[:search_business].to_a == c.id.to_a %>
###Parameters: { "commit"=>"SEARCHING", "search_id"=>["1","2"]
我试过这一行,参数正在发送,但没有选中复选框:
<%= check_box_tag "search_id[]", c.id.to_a %>
###Parameters: { "commit"=>"SEARCHING", "search_id"=>["1","2"]
我试过这一行,参数正在发送,但没有选中复选框:
<%= check_box_tag "search_id[]", c.id %>
###Parameters: { "commit"=>"SEARCHING", "search_id"=>["1","2"]
请有人帮我这个例子吗?
我真的很感激所有的帮助。
答案 0 :(得分:0)
对于复选框,您应该在数组中发送参数。这是通过附加&#34; []&#34;到&#34;名称&#34;输入的属性,就像您在某些尝试中所做的那样。我会这样做:
控制器(在搜索和搜索表单之前调用的相同操作)
@people = Person.all
if params[:search_ids]
@search = Person.find_all_by_id(params[:search_ids])
end
视图
<% form_tag :controller=>"person",:action=>"searching" do %>
<% @people.each do |c| %>
<% checked = @search && @search.collect(&:id).include?(c.id) %>
<%= check_box_tag "search_ids[]", c.id, checked %>
<% end %>
<%= submit_tag "SEARCHING" %>
<% end %>
编辑 - 我刚刚意识到我混淆了@people(这是数据库中的所有人)和@search应该只是被检查的人。