Ruby on rails 获取参数时,选择框出错
我使用2个选择框和2个条件创建了一个搜索Ruby on rails 获取参数时,选择框出错,ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,我使用2个选择框和2个条件创建了一个搜索 电子作业的选择框 “我的电子执行”状态的选择框 当select STATE=0时,我的错误是没有获取值 但当我选择STATE=1时,它正在工作 我的桌子 TABLE EJECUTIVES |id| |name| |lastname1| TABLE POLICIES |id| |num_police| |ejecutive_id| |state| state= '0' is ok '1'
- 电子作业的选择框
- “我的电子执行”状态的选择框
TABLE EJECUTIVES
|id| |name| |lastname1|
TABLE POLICIES
|id| |num_police| |ejecutive_id| |state|
state= '0' is ok
'1' is canceled
'2' is expired
这是我的控制器
class PolicyManagement::PolicyController < ApplicationController
def generate_print_ejecutive_comercial
@ejecutives = Ejecutive.find(:all)
@selected_ejecutive = Ejecutive.find_by_id(params[:search]) if params[:search]
@selected_state = Policy.find_by_state(params[:state]) if params[:state]
@search = Policy.find(:all,:conditions =>['ejecutive_id = ? AND state = ? ', @selected_ejecutive, @selected_state ] )
@policies = @search.paginate( :page => params[:page], :per_page =>10)
end
end
但是,当我选择一个eExecutive并状态为ok(0)时,它不起作用并显示此状态
Ejecutive Load (0.2ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.7ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.6ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (2.8ms) SHOW FIELDS FROM `policies`
Policy Load (0.7ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '1') LIMIT 1
Policy Load (29.9ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 1 )
Ejecutive Load (0.2ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.5ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.1ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (1.1ms) SHOW FIELDS FROM `policies`
Policy Load (0.3ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '0') LIMIT 1
Policy Load (8.8ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 4 )
Ejecutive Load (0.3ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.5ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.3ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (2.8ms) SHOW FIELDS FROM `policies`
Policy Load (6.4ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '2') LIMIT 1
Policy Load (6.8ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 1098 )
我不知道为什么要这样做:当我选择状态ok(0)时,从策略中选择*WHERE(eExecutive_id=5和state=4)
当我选择一个eExecutive并且状态为expired(2)时,它不工作并显示它
Ejecutive Load (0.2ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.7ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.6ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (2.8ms) SHOW FIELDS FROM `policies`
Policy Load (0.7ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '1') LIMIT 1
Policy Load (29.9ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 1 )
Ejecutive Load (0.2ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.5ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.1ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (1.1ms) SHOW FIELDS FROM `policies`
Policy Load (0.3ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '0') LIMIT 1
Policy Load (8.8ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 4 )
Ejecutive Load (0.3ms) SELECT * FROM `ejecutives`
Ejecutive Columns (1.5ms) SHOW FIELDS FROM `ejecutives`
Ejecutive Load (0.3ms) SELECT * FROM `ejecutives` WHERE (`ejecutives`.`id` = '5') LIMIT 1
Policy Columns (2.8ms) SHOW FIELDS FROM `policies`
Policy Load (6.4ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '2') LIMIT 1
Policy Load (6.8ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 1098 )
我不知道为什么这样做:当我选择状态过期(2)时,从策略中选择*WHERE(eExecutive_id=5,state=1098)
我将非常感谢所有类型的帮助我认为您在逻辑和state=1
方面犯了错误,因为id==1的策略具有state=1
看看这个:
Policy Load (6.4ms) SELECT * FROM `policies` WHERE (`policies`.`state` = '2') LIMIT 1
Policy Load (6.8ms) SELECT * FROM `policies` WHERE (ejecutive_id = 5 AND state = 1098 )
在第二个查询中,您正在搜索状态为state=1098
的策略,因为您正在传递@selected\u state
的值,这是一个策略
模型实例
尝试将您的线路更改为:
@search = Policy.find(:all,:conditions =>['ejecutive_id = ? AND state = ? ', @selected_ejecutive, params[:state] ])
您同时使用Rails 3.2和Rails 3.1标记了您的问题。您实际使用的是哪一个?您在哪里记录了控制器中使用的所有值?你为什么不发布这些结果?对不起,我使用的是rails 2。3@7stud您知道为什么我只从state=1获取值,为什么不使用state=0或2当您选择state=0和state=1时,您可以从服务器发布日志吗。。。日志应该显示在您提交表单时,哪些参数正在传递给控制器。非常感谢您的帮助,我非常感谢您的帮助