搜索后,复选框正在清理

时间:2014-03-24 20:10:15

标签: 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 < ApplicationController

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

end

以下是观点:

 <% 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 %>

我试过了:

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

每次点击搜索时,检查选项都是清理,并且不会保存我所做的检查。

复选框不能保存我在搜索后检查的内容。

请有人帮助我吗?

3 个答案:

答案 0 :(得分:0)

你实际上正在使用params [:business]而不是params [:state]这就是我认为的整个问题?

答案 1 :(得分:0)

您想要的是保持复选框的“检查”状态,而不是其值。

复选框在选中时提交值1或在未选中时提交0。所以你要使用一个变量来存储这些参数的值。

这样的事情:

控制器

@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 %>

答案 2 :(得分:0)

复选框标记的语法是

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' %>