Hello, I have two ActiveRecord classes. One is Route the other is Waypoints. I have constructed an XML representation so I can use AJAX to create a Route with all waypoints in a single create call to RouteController. When I call Route.from_xml(xmlString) it is not returning an object - it's leaving the object (@route) nil, but not erroring. Any ideas? Here's some code:
RoutesController: def create @route = nil; if params[:requestXML] # unserialise from XML using ROXML @route = Route.from_xml(params[:requestXML]); else @route = Route.new(params[:route]) end respond_to do |format| #The following line unsurprisingly fails, as @route is nil if @route.save flash[:notice] = 'Route was successfully created.' format.html { redirect_to(@route) } format.xml { render :xml => @route, :status => :created, :location => @route } format.js else format.html { render :action => "new" } format.xml { render :xml => @route.errors, :status => :unprocessable_entity } end end end Route.rb: class Route < ActiveRecord::Base include ROXML has_many :waypoints xml_reader :title xml_reader :totalDist xml_reader :totalMis xml_reader :totalHg xml_reader :lonlatx xml_reader :lonlaty xml_reader :grcenter xml_accessor :waypoints, [Waypoint], :in => "waypoints" end Waypoint.rb: class Waypoint < ActiveRecord::Base include ROXML belongs_to :route xml_reader :isLeg xml_reader :lonlatx xml_reader :lonlaty xml_reader :gridReference xml_reader :ascent xml_reader :descent xml_reader :distance xml_reader :bearing xml_reader :timemins end NB I've not specified types at the moment for the above elements. I'm just trying to verify that the XML is being parsed by ROXML's from_xml method. Error Message in logs: Processing RoutesController#create (for 127.0.0.1 at 2009-02-03 16:36:12) [POST] Session ID: BAh7DToMY3NyZl9pZCIlZWY5NWRjODFjMTI5ZDg3ZDlhZGRjODM0ODA3NmZl YTE6DW5hdnN0YWNrWwYiBi86DnJldHVybl90byIaL2FkYW1mb3dsZXIvZGFz aGJvYXJkOhBsYXN0X2FjdGl2ZVU6IEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRo Wm9uZVsISXU6CVRpbWUNb0MbgAAAwMEGOh9AbWFyc2hhbF93aXRoX3V0Y19j b2VyY2lvblQiCFVUQ0AMOgl1c2VyaRM6C2ZvcnVtc3sAOgt0b3BpY3NADiIK Zmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsG Ogtub3RpY2UiJFJvdXRlIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZC4GOgpA dXNlZHsGOxBU--48a6d44f6baa5129fd1160815273a9c30ca746a8 Parameters: {"requestXML"=>"<route><totalDist>11185.321521477119</ totalDist><totalHg>640</totalHg><totalMins>235.75000000000003</ totalMins><lonlatx>357865</lonlatx><lonlaty>271635</ lonlaty><grcenter>SH 71635 57865</ grcenter><waypoints><waypoint><isLeg>false</isLeg><lonlatx>357290</ lonlatx><lonlaty>271650</lonlaty><gridReference>SH 71650 57290</ gridReference><ascent>81</ascent><descent>220</descent><distance>0</ distance><bearing>0</bearing></waypoint><waypoint><isLeg>false</ isLeg><lonlatx>357260</lonlatx><lonlaty>274600</ lonlaty><gridReference>SH 74600 57260</gridReference><ascent>275</ ascent><descent>48</descent><distance>2950.152538429157</ distance><bearing>91</bearing></waypoint><waypoint><isLeg>false</ isLeg><lonlatx>359160</lonlatx><lonlaty>273330</ lonlaty><gridReference>SH 73330 59160</gridReference><ascent>73</ ascent><descent>170</descent><distance>2285.3664913969487</ distance><bearing>326</bearing></waypoint><waypoint><isLeg>false</ isLeg><lonlatx>359170</lonlatx><lonlaty>270050</ lonlaty><gridReference>SH 70050 59170</gridReference><ascent>182</ ascent><descent>172</descent><distance>3280.015243867016</ distance><bearing>270</bearing></waypoint><waypoint><isLeg>false</ isLeg><lonlatx>357470</lonlatx><lonlaty>269740</ lonlaty><gridReference>SH 69740 57470</gridReference><ascent>29</ ascent><descent>107</descent><distance>1728.0335644888382</ distance><bearing>190</bearing></waypoint><waypoint><isLeg>false</ isLeg><lonlatx>356840</lonlatx><lonlaty>270440</ lonlaty><gridReference>SH 70440 56840</gridReference><ascent>640</ ascent><descent>717</descent><distance>941.7536832951597</ distance><bearing>132</bearing></waypoint></waypoints></route>", "authenticity_token"=>"a538a4ed8056e17ded2904abfb00628ff6594a07", "action"=>"create", "controller"=>"routes"} [globalite] loading locale: en-US from config [globalite] Locale set to en-US [globalite] loading locale: en-US from config [globalite] Locale set to en-US NoMethodError (You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.delete): /Library/Ruby/Gems/1.8/gems/activerecord-2.1.2/lib/active_record/ transactions.rb:124:in `rollback_active_record_state!' /Library/Ruby/Gems/1.8/gems/activerecord-2.1.2/lib/active_record/ transactions.rb:106:in `save' /app/controllers/routes_controller.rb:52:in `create' /Library/Ruby/Gems/1.8/gems/actionpack-2.1.2/lib/action_controller/ mime_responds.rb:106:in `call' /Library/Ruby/Gems/1.8/gems/actionpack-2.1.2/lib/action_controller/ mime_responds.rb:106:in `respond_to' /app/controllers/routes_controller.rb:51:in `create' ... Thanks, Adam. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---