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)值是多少?