Carlos Morales
Carlos Morales

Reputation: 1149

How can I use a select like param?

I'm trying to use a result from a select in a search param

   SELECT distinct policy_business_unit_id as number FROM `policies` WHERE (policy_business_unit_id ='2')

That condition shows

   number
     2

I'm trying to use "2" in my param condition.

   SELECT distinct policy_business_unit_id as number FROM `policies` WHERE (policy_business_unit_id ='2')
   SELECT * FROM `cia_ensures` WHERE (id = 2)   

But i'm getting this

 SELECT * FROM `cia_ensures` WHERE (id = NULL)       

My tables:

|cia_ensures|
   |id|  |name|
    1      aaa
    2      bbb
    3      ccc
    ...

|policy_business_units|
   |id|  |name|
    1      abc
    2      def
    3      ghi
    ...

|policies|
   |id|   |number| |policy_business_unit_id|
    1       1234              2
    2       5678              1
    3       9123              2
    4       4567              1      
    ...

Here is the controller:

   def ajax
     @business = PolicyBusinessUnit.find(:all)
     @select = Policy.find(:all,:select=>['distinct policy_business_unit_id as number'],:conditions=>['policy_business_unit_id = ?',params[:business] ])    
     @list_cias = CiaEnsure.find(:all,:conditions=>['id = ?',@select])
   end

Here is the model:

   class Policy < ActiveRecord::Base
      belongs_to :cia_ensure
   end

   class CiaEnsure < ActiveRecord::Base
      has_many :policies
   end

Here is the view:

   Business: 
   <%= select_tag "business",options_for_select(@list_cias.collect {|t| [t.name.to_s ,t.id]}, params[:business].to_i ) %>

   Cias:
   <%= select_tag "cias",options_for_select(@business.collect {|t| [t.name.to_s ,t.id]}, params[:cias].to_i ) %>

What I'm trying to do is:

     @business = PolicyBusinessUnit.find(:all)
     @select = Policy.find(:all,:select=>['distinct policy_business_unit_id as number'],:conditions=>['policy_business_unit_id = ?',params[:business] ])    
     @list_cias = CiaEnsure.find(:all,:conditions=>['id = ?',@select[0].try(:number)  ])

Here is my logs:

   ##### HERE I SHOULD HAVE THE NUMBER 2
   SELECT distinct policy_business_unit_id FROM `policies` WHERE (policy_business_unit_id ='2')

   ##### I WANT TO USE NUMBER 2 
   SELECT * FROM `cia_ensures` WHERE (id = NULL) 

Please somebody can help me?

Upvotes: 0

Views: 49

Answers (1)

xlembouras
xlembouras

Reputation: 8295

when you give

@list_cias = CiaEnsure.find(:all,:conditions=>['id = ?',@select[0].try(:number)  ])

are you sure that @select[0] contains an object that responds to :number ?

can you provide us the @select variable?

PS: If you are using anything newer than rails 2.3 please restyle you AR queries

Upvotes: 1

Related Questions