I don't think you should be worried about lat and long being outside of the 
locations. What is the worst thing that can happen? You have to make a 
judgement based on the application requirements.

On Friday, December 13, 2013 7:36:27 PM UTC-8, Derek Chadwell wrote:
>
> I am using the addresspicker jquery to get a user address.  The user 
> address fields and hidden fields for latitude and longitude are in 
> fields_for ":Locations".  In order for the jquery callback to fill in my 
> latitude and longitude boxes I have to use the ":name=>" tag on the fields. 
>  When I do this, my form is posted with the latitude and longitude fields 
> outside the :Locations structure.  As a result, I can't use ".permit()" on 
> them and I'm worried that I'm leaving my program vulnerable.
>
> the data structure sent to rails via the POST:
>
> "utf8"=>"✓",
>  "authenticity_token"=>"VIp6TnK7UoVEfELzwUhkbdySp/k4NhMtjdlRIWcgVaY=",
>  "user"=>{"first_name"=>"firstname",
>  "last_name"=>"lastname",
>  "email_address"=>"[email protected] <javascript:>",
>  "password"=>"[FILTERED]",
>  "password_confirmation"=>"[FILTERED]"},
>  "Locations"=>{"location"=>"Bugs bunnies Rabbit hole, Albequerque, NM, United 
> States"},
>  "lat"=>"39.988052",
>  "lng"=>"-28.817452",
>  "commit"=>"Creating a user"}
>
>
>
>
> The forms and corresponding javascript:
>
> 41     <div class="span5">
>  42       <%= form_for @user do |f| %>
>  43         <legend>Create Your Account</legend>
>  44         <%= f.label :first_name %>
>  45         <%= f.text_field :first_name, :placeholder => "First Name" %>
>  46
>  47         <%= f.label :last_name %>
>  48         <%= f.text_field :last_name, :placeholder => "Last Name"%>
>  49
>  50         <%= f.label :email_address %>
>  51         <%= f.text_field :email_address, :placeholder => 
> "[email protected]" %>
>  52
>  53         <%= f.label :password %>
>  54         <%= f.password_field :password, :placeholder => "Minimum six 
> characters" %>
>  55
>  56         <%= f.label :password_confirmation, "Confirm Password" %>
>  57         <%= f.password_field :password_confirmation %>
>  58
>  59         <label>
>  60           Where you would like to find volunteer opportunities
>  61         </label>
>  62         <%= fields_for :Locations do |l| %>
>  63           <%= l.text_field :location, :placeholder => "e.g. 27370 or 
> Archdale, NC", :id => "geocomplete", :class => "ui-autocomplete-input", 
> :autocomplete=>"off"%>
>  64
>  65           <%= l.text_field :latitude,  :name => "lat" %>
>  66           <%= l.text_field :longitude, :name => "lng" %>
>  67         <% end %>
>  68         <br>
>  69         <%= f.submit "Let's do it!", :class => "btn btn-large 
> btn-success" %>
>  70       <% end %>
>  71
>  72     </div>
>  73     </div>
>  74   </div>
>  75
>  76   <script src="
> http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places<http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places>
> "></script>
>  77   <script src="
> http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";></script>
>  78   <script src="/assets/jquery.geocomplete.js?body=1"></script>
>  79     <script>
>  80       $(function(){
>  81         $("#geocomplete").geocomplete({
>  82           details: "form",
>  83           types: ["geocode", "establishment"]
>  84         });
>  85
>  86       });
>  87     </script>
>
>
> my controller as it stands now:
>
>   1 class UsersController < ApplicationController
>   2
>   3   def create
>   4     @user = User.new(params[:user].permit(:first_name, :last_name, 
> :password,
>   5                                           :password_confirmation, 
> :email_address))
>   6     @user.confirmation = _random_string()
>   7     @location = 
> @user.Locations.build(params[:Locations].permit(:location))
>   8     @location.coordinates = [params[:lng],params[:lat]]
>   9     @location.distance = 50
>  10
>  11     if not @user.save
>  12       flash[:notice] = "user not saved"
>  13       render "/static_pages/homepage"
>  14       return
>  15     end
>
> The javascript is awfully long so I won't post it here, but it can be 
> viewed at https://github.com/ubilabs/geocomplete/ .  I think all you 
> would need to know about it is that it defines attributes for a found 
> google address and then fills in fields on a page whose names match the 
> attribute names in the jquery.  Of those, I am only interested in "lat" and 
> "lng" for now.
>
> My question is around the right way to do this.  Should I do something to 
> force the "lat" and "lng" variables into the Locations hash so I can 
> .permit() those keys and keep my program safe?  Should I not worry about it 
> and soldier on?  Is there something inherently wrong with my use of the 
> name symbols with the fields_for functionality?  A consult is very welcome.
>
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/f5ffd78b-3b3e-4cc9-8964-df7790e7097a%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to