Find_all_by and find(:all) to only select certain values for a selection box

So....let's have a look if I understood the issue:

-Find_all_by is actually the same like Find(:all), however Find_all_by
is much shorter and less complicated than the syntax of Find(:all)

-So in my CONTROLLER it says @files = find(:all) however I don't want
to see all files displayed in my selection box, because I only want to
see the foles whose mandant_id is the same like the mandant_id in
invoice.
So i decided to change the @files = find(:all) into => @files =
File.find_all_by_mandant_id(Invoice.mandant_id)

But this doesn´t work so does any one has an inspiration to get it
working??

If so please help me!! thnx a lot!! =D
Valli

Valli wrote:

So....let's have a look if I understood the issue:

-Find_all_by is actually the same like Find(:all), however Find_all_by
is much shorter and less complicated than the syntax of Find(:all)

You need an instance of the Invoice class, not the class...
Perhaps something like:

@invoice = Invoice.find(params[:id])
@files = File.find_all_by_mandant_id(@invoice.mandant_id )

or

@invoice = Invoice.find(params[:id])
@files = File.find(:all, :conditions => ['mandant_id = ?',
@invoice.mandant_id])

thnx a lot for the idea, i really apreciate it!!
however it still doesn't work correctly so anyone has an other
suggestion?

well i think it could help to update the mandant_id before carrying on
with the files_id, because if not the how could the database actually
know the
new value for the mandant_id???

--> for this I think u need :onchange => "#{remote_function(:url =>
{:action => "update_sprints"}, :with => "'project_id='+value")}"})
However i cannot really work out how this works....or why the formula
is like this.....

thnx a lot for the idea, i really apreciate it!!
however it still doesn't work correctly so anyone has an other
suggestion?

What do you mean 'it doesn't work'? Did it generate an error? What
it should do is find all the Files with mandant_id of
@invoice.mandant_id. If it did not do this what did it do? If that
is not what you want it to do please try asking the question again in
a different way as it is not clear what you want.

well i think it could help to update the mandant_id before carrying on
with the files_id, because if not the how could the database actually
know the
new value for the mandant_id???

Pardon? This makes no sense to me. Why is there a new value for the
mandant_id when you are trying to find all the Files with a given
mandant_id?

Colin

so i want to selectioin boxes,

-->one for choosing the mandant_id
--> and then later having tht information in my second selection box i
only want to see the files_id which correspond to tht mandant.....
--> and i will choose one which i will see later in the database next
to the mandant_id

However in the moment i have the to selection boxes and they work fine
ecxept tht the second one does't display ONLY the files corresponding
to the mandant.

Does tht make any sense know??
and surry for the bad understanding....

In that case you may want to use AJAX to update the second selection
box when the user selects from the first one. If you have not used
AJAX with Rails then a bit of googling will provide numerous tutorials
and guides.

Colin

alright thnx a lot!!
sur tht will help....
Valli

cascading select boxes

search for that

thank you sooo much!! tht was just what i needed for my problem!!

however with each solution....there comes a new problem....so maybe
could you please help me??

What I am pretending to do is this:

1) When I create a new invoice the invoice.id should put itself
automatically in the place of the slip.invoice_id
--> for actually finding out in which slip to put the new invoice.id I
applied many find mehods:
     @akte = Akte.find_all_by_mandant_id(@rchng.mandant_id)
    @slip = Slip.find_all_by_akte_id(@akte, :conditions => {:rchng_id
=> 'NULL'})
--> and i donot get an error message when creating a new invoice...

2) Now tht i have found the right slip to put my invoice.id in I don't
know how to tell ruby on rails that it copies the invoice.id and
pastes it into the slip.invoice_id. However I've tried this:
--> @slip.each do |slip|
      slip.rchng_id = rchng.id
    end
--> and i don't get an error message however, the invoice.id does not
appear in the slip.invoice_id

So anybody has an idea of how to get this working??
thnx a lot in advance

oooh!! I'm very sorry I've completly forgotten to translate....

-->@file = File.find_all_by_mandant_id(@invoice.mandant_id)
    @slip = Slip.find_all_by_file_id (@file, :conditions =>
{:invoice_id => 'NULL'})

No, I don't have any validations done at the moment due to the fact
that they could produce errors.
Well the realtions are quiet simple:

1)class Slip < ActiveRecord::Base
   belongs_to :invoice
   belongs_to :mandant

2) class Invoice < ActiveRecord::Base
   has_many :slips
   belongs_to :mandant

3) class Akte < ActiveRecord::Base
   belongs_to :mandant
   has_many :slips
   has_many :invoice, :through => :slips

4)class Mandant < ActiveRecord::Base
   has_many :files
   has_many :invoices
   has_many :slips, :through => :aktes

So you said that the invoice.id must be saved before I can actually
start working with it no??
-->Therefore I should locate my find methods and the loop in the
controller's def creat. Because that would mean that the invoce.id
I've choosen earlier from my selection box has allready been saved,
no??
thank you!

p.s.:the shallow understanding might be because I'm quite new to ruby
on rails ; )

Well found a solution to part of my last problem....
the find methods actually work know =)
#Controller
--> @invoice = Invoice.new
      @files = File.find_all_by_mandant_id(@invoice.mandant_id)
      @slips = Slip.find(:all, :conditions =>
{:invoice_id=>nil, :file_id=>@files})

However i'm still trying to find out how to OVERWRITE THE BLANK
invoice_id IN MY SLIP CLASS WITH THE @invoice.id.
In the moment my code looks something like this:
#Cotroller
-->@slips.each do |slip|
    invoice_id =@invoice.id
    end
Although it doesn't create an error message it still doesn't overwrite
the blank Slip.invoice_id......

So if anyone has a suggestion or an idea, please help me
Thanks in advance....