Hi Ephraim

My last answer was a bit vague.  Here are more detailed steps to deal with
your issue.  This is going on the assumption that you are getting your
Geolocation info through a javascript function.


1.  Create form with only hidden fields for GeoLocation data, looks like
only latitude and longitude in your case.  So something like

<%= form_tag '/users/set_geolocation/' (or use rails helper method) do %>
<%= hidden_field_tag :latitude, :id => 'latitude-field' %>
<%= hidden_field_tag :longitude, :id => 'longitude-field %>



On Fri, Feb 28, 2014 at 3:48 PM, Ephraim Feig <[email protected]>wrote:

> Ben,
>
> Thank you. It makes total sense. Unfortunately, I am obviously missing the
> correct syntax for doing this. I've tried a lot of different ways, but no
> luck so far. I'll keep trying.
>
> Ephraim
>
>
> On Friday, February 28, 2014 12:38:28 PM UTC-8, Benjamin Wanicur wrote:
>
>> Hi Ephraim
>>
>> You are issuing an AJAX call to your UsersController.  This cannot
>> redirect the page directly.  You could (I would not recommend this) have a
>> success callback in your jQuery method that uses the window.location =
>> "/some_url_here" and that would redirect your browser.
>>
>> Perhaps a better approach (if you want the page to redirect) is create a
>> form with a few hidden form fields (for your geolocation data).  The submit
>> button on the form could trigger your JS function and then submit (not AJAX
>> call) to your UsersController#set_geolocation method.  This would be a
>> plain-old HTTP request (POST request) and it will follow the Rails
>> redirect_to method.
>>
>> Cheers
>>
>> Ben W
>>
>>
>> On Fri, Feb 28, 2014 at 11:47 AM, Ephraim Feig <[email protected]>wrote:
>>
>>> 0 down vote 
>>> favorite<http://stackoverflow.com/questions/22102460/page-does-not-update-after-navigator-geolocation-call-in-rails-check-in-check#>
>>>
>>> I am using standard HTML5 location services. A user comes into a cafe,
>>> opens the app, clicks on "Check-in!" and the app gets the location and uses
>>> it until the user later clicks "Check-out!".
>>>
>>> In my viewer, I call on a script containing navigator.geolocation and it
>>> does its job. I successfully pass the latitude and longitude parameters to
>>> my controller and it updates everything. But when all is done and I
>>> redirect_to root_url, the new page does not refresh (I know at some point I
>>> should do it more elegantly and just update the link part, but for now, I
>>> just want to get this going and understand what is going on). Here is my
>>> code:
>>>
>>> In my viewer-
>>>
>>>  <% if (@voterinfo.checkin == 0) %>
>>>               <li>
>>>                 <h4>    <%= link_to "-->Check-In!", "#", :id => 'findMe' %> 
>>>      </h4>
>>>                 <script>
>>>                   $(function(){
>>>                      $("a#findMe").click(function(){
>>>                          if (navigator.geolocation) {
>>>                              
>>> navigator.geolocation.getCurrentPosition(function (position) {
>>>                                  $.post('/users/set_geolocation/', 
>>> {latitude: position.coords.latitude,
>>>                                              longitude: 
>>> position.coords.longitude,
>>>                                              dataType: 'float'});
>>>                              }, function () {
>>>                                  alert('We couldn\'t find your position.');
>>>                              });
>>>                          } else {
>>>                              alert('Your browser doesn\'t support 
>>> geolocation.');
>>>                          }
>>>                       });
>>>                   })
>>>                 </script>
>>>                </li>
>>>           <% else %>
>>>               <li> <h4><%= link_to "--->CHECK-OUT!", :controller => :users,
>>>                                    :method => :set_geolocation %></h4></li>
>>>           <% end %>
>>>         </ul>
>>>   <% end %>
>>>
>>> And here is the relevant part of my users_controller-
>>>
>>>  def set_geolocation
>>>   @user = current_user
>>>   @voterinfo = Voterinfo.find_by_user_id(@user.id)
>>>   if (@voterinfo.checkin == 0)
>>>     @user.update_attributes(:longitude => params['longitude'], :latitude => 
>>> params[:latitude])
>>>     @user.save(validate: false)
>>>     sign_in(@user)
>>>     @voterinfo.checkin = 1
>>>     @voterinfo.save
>>>     redirect_to root_url
>>>   else
>>>    @voterinfo.checkin = 0
>>>    @voterinfo.save
>>>    redirect_to root_url
>>>   end
>>>
>>> end
>>>
>>> Thank you for any help here.
>>>
>>>
>>>  --
>>> --
>>> SD Ruby mailing list
>>> [email protected]
>>>
>>> http://groups.google.com/group/sdruby
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "SD Ruby" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
> --
> SD Ruby mailing list
> [email protected]
> http://groups.google.com/group/sdruby
> ---
> You received this message because you are subscribed to the Google Groups
> "SD Ruby" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- 
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby
--- 
You received this message because you are subscribed to the Google Groups "SD 
Ruby" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to