Yes - this is a re-post, and my last post to this question - but I was just taking one last attempt at getting help. Any answers on how to do either would be greatly appreciated. I am new to rails and have been scouring the web for the past two days trying to figure out 2 things. 1) I am currently using a form with 2 models. The first is person, the second is address. I attempted to duplicate the two models on one form as seen in Advanced Rails Recipes and Railscasts, and they work fine - except when there are validation issues on the address piece it just returns saying "Addresses is invalid". I would much rather it say "Street Address is blank" or "City cannot be blank" any ideas on how to do this? 2) In using the GeoKit plugin I am attempting to use the acts_as_mappable piece so when I create an address it adds the lat and lng to the DB. If I choose just 1 field and specify it this works fine and the table populates, but I want to concat all of the form values (Street_Address_1, City, State, Postal_Code, Country) and pass these in as the location. It appears GeoKit expects address to be a single field - which will not work for my application. I am not opposed to using another plugin, it just seems GeoKit is overall the easiest. Any help would be greatly apperciated, and please go easy on me, I am attempting to learn RoR on and old AWDWR book, and Advanced Rails Recipies. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
to your first question: you can either define a message for the validate_* functions, so for example: validate_presence_of :city validate_presence_of :street, {:message => "your specific error message"} OR if you wanna do your own validation: def validate errors.add(:my_variable, "your specific error message") if validate_my_variable errors.add(:my__other_variable, "your specific error message") if validate_my_other_variable end i dont have any experience with geokit, so no help from me there...sorry hope this helps! smn On Jul 7, 5:35 pm, "Jeff.Corcoran" <jeff.corco...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Yes - this is a re-post, and my last post to this question - but I was > just taking one last attempt at getting help. > > Any answers on how to do either would be greatly appreciated. > > I am new to rails and have been scouring the web for the past two days > trying to figure out 2 things. > > 1) I am currently using a form with 2 models. The first is person, the > second is address. I attempted to duplicate the two models on one form > as seen in Advanced Rails Recipes and Railscasts, and they work fine - > except when there are validation issues on the address piece it just > returns saying "Addresses is invalid". I would much rather it say > "Street Address is blank" or "City cannot be blank" any ideas on how > to do this? > > 2) In using the GeoKit plugin I am attempting to use the > acts_as_mappable piece so when I create an address it adds the lat and > lng to the DB. If I choose just 1 field and specify it this works fine > and the table populates, but I want to concat all of the form values > (Street_Address_1, City, State, Postal_Code, Country) and pass these > in as the location. It appears GeoKit expects address to be a single > field - which will not work for my application. I am not opposed to > using another plugin, it just seems GeoKit is overall the easiest. > > Any help would be greatly apperciated, and please go easy on me, I am > attempting to learn RoR on and old AWDWR book, and Advanced Rails > Recipies.--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> 1) I am currently using a form with 2 models. The first is person, the > second is address. I attempted to duplicate the two models on one form > as seen in Advanced Rails Recipes and Railscasts, and they work fine - > except when there are validation issues on the address piece it just > returns saying "Addresses is invalid". I would much rather it say > "Street Address is blank" or "City cannot be blank" any ideas on how > to do this?It sounds like you have validates_associated :address On your Person class. That validation works by calling valid? on the associated object and it''s default message is "is invalid". It just doesn''t know any better. I''d also guess that you have <%= error_messages_for :person %> in your view. The result is that you render the errors for the person... and it only knows that address is invalid. If you want more you''ll have to give Rails permission to show more. The simplest way would be to add address to the list of objects for which you render errors: <%= error_messages_for :person, :address %>> 2) In using the GeoKit plugin I am attempting to use the > acts_as_mappable piece so when I create an address it adds the lat and > lng to the DB. If I choose just 1 field and specify it this works fine > and the table populates, but I want to concat all of the form values > (Street_Address_1, City, State, Postal_Code, Country) and pass these > in as the location. It appears GeoKit expects address to be a single > field - which will not work for my application. I am not opposed to > using another plugin, it just seems GeoKit is overall the easiest.You don''t need to have one big address field, only provide something like it for geocoding. I have similar needs in one app and solved it like this: class Address < ARec::Base validates_presence_of :street, :city, :state, :zip_code validates_numericality_of :lat, :lng acts_as_mappable before_validation_on_create :generate_geocode private def generate_geocode address = [self.street, self.city, self.state, self.zip_code].join('', '') geoloc = GeoKit::Geocoders::MultiGeocoders.geocode(address) errors.add_to_base(''Could not geocode address'') unless geo.success self.lat, left.lng = geoloc.lat, geoloc.lng end end HTH, AndyV --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
You are amazing! Thanks! I was trying to find a way of joining all of that information together for the geokit, trying to use a concat function and it didn''t work out to well. I will have to try the validation piece later on I hope that works! On Jul 8, 8:45 am, AndyV <AndyVana...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > 1) I am currently using a form with 2 models. The first is person, the > > second is address. I attempted to duplicate the two models on one form > > as seen in Advanced Rails Recipes and Railscasts, and they work fine - > > except when there are validation issues on the address piece it just > > returns saying "Addresses is invalid". I would much rather it say > > "Street Address is blank" or "City cannot be blank" any ideas on how > > to do this? > > It sounds like you have > validates_associated :address > > On your Person class. That validation works by calling valid? on the > associated object and it''s default message is "is invalid". It just > doesn''t know any better. > > I''d also guess that you have > <%= error_messages_for :person %> > > in your view. The result is that you render the errors for the > person... and it only knows that address is invalid. If you want more > you''ll have to give Rails permission to show more. The simplest way > would be to add address to the list of objects for which you render > errors: > > <%= error_messages_for :person, :address %> > > > 2) In using the GeoKit plugin I am attempting to use the > > acts_as_mappable piece so when I create an address it adds the lat and > > lng to the DB. If I choose just 1 field and specify it this works fine > > and the table populates, but I want to concat all of the form values > > (Street_Address_1, City, State, Postal_Code, Country) and pass these > > in as the location. It appears GeoKit expects address to be a single > > field - which will not work for my application. I am not opposed to > > using another plugin, it just seems GeoKit is overall the easiest. > > You don''t need to have one big address field, only provide something > like it for geocoding. I have similar needs in one app and solved it > like this: > > class Address < ARec::Base > validates_presence_of :street, :city, :state, :zip_code > validates_numericality_of :lat, :lng > > acts_as_mappable > before_validation_on_create :generate_geocode > > private > def generate_geocode > address = [self.street, self.city, self.state, > self.zip_code].join('', '') > geoloc = GeoKit::Geocoders::MultiGeocoders.geocode(address) > errors.add_to_base(''Could not geocode address'') unless geo.success > self.lat, left.lng = geoloc.lat, geoloc.lng > end > end > > HTH, > AndyV--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for that, nice little method, this is what I put in: acts_as_mappable validates_numericality_of :lat, :lng before_validation_on_create :generate_geocode private def generate_geocode address = [self.street, self.city, self.location_state, self.postcode, self.country].join('', '') geoloc = GeoKit::Geocoders::MultiGeocoder.geocode(address) errors.add_to_base(''Could not geocode address'') unless geoloc.success self.lat, self.lng = geoloc.lat, geoloc.lng end -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---