问题保持复选框选择

时间:2015-01-08 15:37:38

标签: ruby-on-rails ruby checkbox ruby-on-rails-2

我做了一个复选框数组,但我选择的选项在提交后没有保留检查。

这是表格:

|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"]

请有人帮我这个例子吗?

我真的很感激所有的帮助。

1 个答案:

答案 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应该只是被检查的人。