ActiveResource find method and restful controllers

Hi,

What’s the best way to add support for the activeresource find method
in the controllers in my rails app?

As I understand it when you invoke something like:
Person.find(:all, :params => {:name = ‘toby’})

this generates a request of:
GET /people.xml?name=toby

Does this mean that in my index method in PeopleController in my rails
app I have params[name] set to toby?

What is the best was of returning useful data from this find from
within my controller i.e., how do I construct a find in the
controller?

Thanks,
Toby

Ok so after a bit of playing I can answer half of my question but I
have also come up with what seems to be a problem with activeresource.

By invoking Person.find(:all, :params => {:name => ‘toby’}) a request
of GET /people.xml?name=toby is created and then in the controller
this appears in the params hash as params[:name]

Currently I am using the following code in my controller but I don’t
think it is a very way to do what I want to do:

def index
if params[:name]
@people = Person.find(:first, :conditions => [“name = ?”,
params[:name]])
raise(ActiveRecord::RecordNotFound, “Couldn’t find person with
name #{params[:name]}”) unless @people
else
@data_dates = People.find(:all)
end

respond_to do |format|
format.xml { render :xml => @people }
end
end

Unfortunately at the activeresource end this generates the error

NoMethodError: undefined method `collect!’ for #Hash:0xb12ab325

I found this ticket but after applying the patch I still have the same
problem: http://dev.rubyonrails.org/ticket/8798

If anyone has any suggestion at all I would be grateful as I am pretty
lost now…

Thanks

Toby

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs