Ruby on rails 复选框在搜索后正在清理

Ruby on rails 复选框在搜索后正在清理,ruby-on-rails,ruby,checkbox,ruby-on-rails-2,Ruby On Rails,Ruby,Checkbox,Ruby On Rails 2,我使用复选框选项创建了一个应用程序,但在完成后,单击搜索会清除选中的内容并启动所有选中的内容(不会保存上次选中的内容) 这是桌子 |people| |id| |name| |state| 1 ABC 0 2 DEF 0 3 DEF 1 4 DEF 1 这里是控制器: class PersonController < ApplicationControl

我使用复选框选项创建了一个应用程序,但在完成后,单击搜索会清除选中的内容并启动所有选中的内容(不会保存上次选中的内容)

这是桌子

|people|
  |id|    |name|   |state|
   1       ABC       0
   2       DEF       0  
   3       DEF       1
   4       DEF       1
这里是控制器:

class PersonController < ApplicationController

  def search
    @people = Person.find(:all,:conditions=>['state = ?',params[:state] ] )
  end

end
class PersonController['state=?',params[:state]]
结束
结束
以下是视图:

 <% form_tag :controller=>"person",:action=>"search" do %>
    Single  <%= check_box_tag "state", "0", params[:state] %>
    Married <%= check_box_tag "state", "1", params[:state] %>
    <%= submit_tag "Search", :name => nil %>
 <% end %>

 <% @people.each do |p|  %>
    p.name
    p.state
 <% end %>
“个人”,操作=>“搜索”执行%>
单身
已婚的
零%>
p、 名字
p、 陈述
我试过:

    Single  <%= check_box_tag "state", "0", params[:state].to_i %>
    Married <%= check_box_tag "state", "1", params[:state].to_i %>
单一
已婚的
我也试过:

    Single  <%= check_box_tag "state", 0, params[:state].to_i %>
    Married <%= check_box_tag "state", 1, params[:state].to_i %>
单一
已婚的
最后是:

    Single  <%= check_box_tag "state", "0", params[:state] %>
    Married <%= check_box_tag "state", "1", params[:state] %>
单一
已婚的
每次单击搜索时,检查选项都在清理,而不是像我那样保存检查

该复选框未保存我在执行搜索后选中的内容


有人能帮我吗?

你实际上使用的是params[:business]而不是params[:state],这就是我认为的全部问题?

你想要的是保持复选框的“check”状态,而不是它的值

复选框在选中时提交值1,未选中时提交值0。因此,您需要使用一个变量来存储这些参数的值

大概是这样的:

<% if @single_check == "1" %>
<%   chk_single = "true" %>
<% else %>
<%   chk_single = "false" %>
<% end %>
<% if @married_check== "1" %>
<%   chk_married = "true" %>
<% else %>
<%   chk_married = "false" %>
<% end %>

Single  <%= check_box_tag "state", 0, :checked=> chk_single %>
Married <%= check_box_tag "state", 1, :checked=> chk_married %>
控制器

@single_check = params[:single]
@married_check = params[:married]
然后,在您看来,可以这样使用它:

<% if @single_check == "1" %>
<%   chk_single = "true" %>
<% else %>
<%   chk_single = "false" %>
<% end %>
<% if @married_check== "1" %>
<%   chk_married = "true" %>
<% else %>
<%   chk_married = "false" %>
<% end %>

Single  <%= check_box_tag "state", 0, :checked=> chk_single %>
Married <%= check_box_tag "state", 1, :checked=> chk_married %>

单个chk_单个%>
已婚chk_已婚%>

复选框标记的语法为

check_box_tag(name, value = "1", checked = false, options = {})
因此,在第三个参数中,您必须传递true或false,这取决于要选中或取消选中复选框的参数

试试这个

Single  <%= check_box_tag "state", "0", params[:state].to_s == '0' %>
Married <%= check_box_tag "state", "1", params[:state].to_s == '1' %>
单一
已婚的

对不起,我打错了,请再次检查你说的清洁是什么意思?另外,[:state]参数到达控制器时的值是多少?复选框的数量是否固定?或者它可以改变吗?0代表“单身”,1代表“已婚”。有静态值,比如我的条件0和1。好吧,你使用了一组单选按钮,因为一个人只能结婚或单身,而不能两者兼而有之:p。但你的问题是显示,对吗?我的意思是,当您提交参数时,它们的值是正确的,唯一的问题是当搜索结果呈现时,检查会返回到原始状态。我说的对吗?当你提交请求时,两个复选框的值是多少?我现在尝试了你的代码,我让两个复选框都处于活动状态,但没有选中我选中的内容。没有保留我选中的选项。两个复选框都显示“选中”?这意味着变量的值都是1。你如何区分不同的支票。我认为他们俩的名字都是:state.Oscar你明白我的问题吗?我有2个复选框,当我选中“已婚”选项,然后单击搜索时,应该选中“已婚”选项,但该选项不起作用。我尝试了你的代码,但没有成功,因为现在每次点击搜索都是选中的。我确实理解了你的问题。您能否尝试检查在提交搜索后随附的变量(@single/married\u check)值是多少?