Updating two divs?

dont give a :update value.

instread, render a RJS Template in your action...

def add_address   ... add the address to the DB etc. ...   #at the end, the action ill automatically render the RJS template end

in your controllers views directory you would have a file called add_address.rjs:

page.replace_html :div-to-update, :partial => "_address-list" page.hide :ID-of-form-to-hide

see for more info:

-> http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html

-> http://api.rubyonrails.org/classes/ActionView/Base.html ...scroll down to "JavascriptGenerator"

Tutorial: http://www.codyfauser.com/articles/2005/11/20/rails-rjs-templates

Hi

I am getting the XML from an external source via HTTPService post. I am using CobraVsMongoose (CVM) to do a xml - hash conversion. One of the fields in the hash is "Task_Number", which is the id of the AR object that I want to retrive.

Here is an example of the object that CVM returns. {"tasks"=>{"task"=>{"Task_Number"=>{"$"=>"3"}, "Task_Name"=>{"$"=>"task_three"}, "Priority_Rank"=>{"$"=>"55"}}}}

I have this code

    xml_string = params[:my_tasks]     @my_tasks = CobraVsMongoose.xml_to_hash(xml_string)

    @my_tasks["tasks"]["task"].each do |hashed_task|       @task = Task.find(hashed_task["Task_Number"]["$"].to_i)       @task.priority = hashed_task["Priority_Rank"]["$"].to_f       @task.save     end

which works perfectly when I have many tasks, however, when I am sending over only one task i get this error in the development.log             TypeError (can't convert String into Integer):

I am pretty sure that "3".to_i should give me the integer 3. also, since the code runs smoothly for multiple tasks in the same XML document, I am baffled.

Thanks for the help Ivor

Found the problem.

When there are multiple tasks, as in this case

{"tasks"=>{"task"=>[{"Task_Number"=>{"$"=>"2"}, "Task_Name"=>{"$"=>"task_two"}, "Priority_Rank"=>{"$"=>"10"}}, {"Task_Number"=>{"$"=>"8"}, "Task_Name"=>{"$"=>"task_eight"}, "Priority_Rank"=>{"$"=>"20"}}, {"Task_Number"=>{"$"=>"4"}, "Task_Name"=>{"$"=>"task_four"}, "Priority_Rank"=>{"$"=>"30"}}, {"Task_Number"=>{"$"=>"5"}, "Task_Name"=>{"$"=>"task_five"}, "Priority_Rank"=>{"$"=>"40"}}, {"Task_Number"=>{"$"=>"1"}, "Task_Name"=>{"$"=>"task_one"}, "Priority_Rank"=>{"$"=>"50"}}, {"Task_Number"=>{"$"=>"3"}, "Task_Name"=>{"$"=>"task_three"}, "Priority_Rank"=>{"$"=>"60"}}, {"Task_Number"=>{"$"=>"7"}, "Task_Name"=>{"$"=>"task_seven"}, "Priority_Rank"=>{"$"=>"70"}}, {"Task_Number"=>{"$"=>"6"}, "Task_Name"=>{"$"=>"task_six"}, "Priority_Rank"=>{"$"=>"80"}}]}}

@my_tasks["tasks"]["task"] is an array of tasks, whereas in the case of the single task, it gets parsed into a hash. My hack to fix this now is to pass the same task twice if the number of tasks is only one, but this is obviously a ugly hack. Can anyone suggest how to change the rails code so that the @my_tasks["tasks"]["task"] object looks the same, whether it has 1 or many elements?

Ivor

Ivor wrote: