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