2013-09-22 27 views
0

我創建使用使用2個條件的錯誤選擇框讓PARAMS

  • 一個選擇框爲ejecutives
  • 我ejecutive

我的錯誤狀態的選擇框2選擇框搜索是沒有得到值時,選擇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 

我的模型

class Policy < ActiveRecord::Base 
    unloadable 
    belongs_to :ejecutive 
    has_many :policy 
end 

class Ejecutive < ActiveRecord::Base 
    has_many :policies 
end 

這是我的看法,但不很瞭解

<% form_tag :controller=>"policy_management/policy",:action=>"generate_print_ejecutive_comercial" do %> 

Ejecutives: 
<%= select_tag "search",options_for_select(@ejecutives.collect {|t| [t.name.to_s+" "+t.lastname1.to_s,t.id]}, params[:search].to_i) %> 

Status: 
<%= select_tag "state", options_for_select([ ["Ok",0],["Cancel",1],["ok but not cancel",2]],params[:state].to_i) %> 

<%= submit_tag "search", :name => nil %> 
<% end %> 

Results 
<% @policies.each do |policy| %> 
    <p> <%= policy.num_policy%> </p> 
    <p> <%= policy.ejecutive.name %> </p> 
    <p> <%= policy.ejecutive.last_name %> </p> 
<% end %> 
<%= will_paginate @policies %> 

我想這但只是獲得州政府的消息LED(1),這實際上是工作時我選擇ejecutive和國家

<%= select_tag "state", options_for_select([ ["Ok",0],["Cancel",1],["ok but not cancel",2]],params[:state].to_i) %> 

只是工作「1」 =取消時,顯示該

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和國家確定(0),這是行不通的,並顯示該

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) 

我沒有想法,爲什麼做:SELECT * FROM policies WHERE(ejecutive_id = 5和國有= 4),當我選擇的狀態確定(0)

當我選擇ejecutive和狀態期滿(2),這是行不通的,並顯示該

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) 

我沒有想法,爲什麼做:SELECT * FROM policies WHERE(ejecutive_id = 5和國家= 1098)時,我選擇的狀態過期(2)

我真的很感激所有形式的幫助

+0

您與Rails 3.2和Rails在同一時間標記您的問題3.1標籤。你實際使用了哪些? – depa

+0

你在哪裏記錄了控制器中使用的所有值?你爲什麼沒有發佈這些結果? – 7stud

+0

對不起,我使用rails 2.3 –

回答

1

我認爲你犯了一個錯誤在你的邏輯和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_state的值,policy模型實例尋找政策的第二個查詢。

試着改變你的線路:

@search = Policy.find(:all,:conditions =>['ejecutive_id = ? AND state = ? ', @selected_ejecutive, params[:state] ]) 
+0

非常感謝你對我的幫助,我非常感謝你的幫助 –