Passing Arrays in recursive functions.

ok, I'm still new to ruby and new to rails. what I have is a task database that acts_as_tree a task can have a children an those children are full tasks so they can have children of their own, Tasks can only be completed if they have no children, a task with children is only completed if all its children are done. this much I have working, I'm trying to add some Ajax support for toggling the done/ not_done flag on the view but I'm hitting a problem and I'm not sure how to get around it. [model]   def completed?     self.siblings.all? { |x| x.done } if self.parent   end

[controller] def task_done    @task = Task.find(params[:id])    is_complete = !@task.done    ids_changed = task_complete!(@task, is_complete)    words = is_complete ? " " : " Not "    flash[:notice] = "Task is#{words}finished"     if request.xhr? then       render :update do |page|         ids_changed.each {|x|           page.toggle "td_#{x}"           page.toggle "menu_#{x}_done"           }       end     else       redirect_to_index     end end

  def task_complete!(taskid, is_complete=true, ids_changed = )     @task = Task.find(taskid)     val = is_complete ? 1 : 0     @task.update_attribute(:done, val)     ids_changed.insert(-1,@task.id)     if @task.completed?       task_complete!(@task.parent, is_complete, ids_changed)     end   end

what I have thought about is changing task_complete! to pass an array back an forth but am unsure how to get each call to insert a new element into the array and since this happens in a place I don't know how to hack away at I'm at a bit of a loss. any suggestions/advice is appreciated.

found the solution on my own, I uh forgot to return the array after the call

def task_done    @task = Task.find(params[:id])    is_complete = !@task.done    ids_changed = task_complete!(@task, is_complete)    words = is_complete ? " " : " Not "    flash[:notice] = "Task is#{words}finished"     if request.xhr? then       render :update do |page|         ids_changed.each {|x|           page.toggle "td_#{x}"           }           page.toggle "menu_#{params[:id]}_done"       end     else       redirect_to_index     end end

  def task_complete!(taskid, is_complete=true, ids_changed = )     @task = Task.find(taskid)     val = is_complete ? 1 : 0     @task.update_attribute(:done, val)     ids_changed.insert(-1,@task.id)     if @task.completed?       task_complete!(@task.parent, is_complete, ids_changed)     end     ids_changed   end