Ruby on rails 获取参数时,选择框出错

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'

我使用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' 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时,您可以从服务器发布日志吗。。。日志应该显示在您提交表单时,哪些参数正在传递给控制器。非常感谢您的帮助,我非常感谢您的帮助