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]<javascript:> > > 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] <javascript:> >> 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] <javascript:>. >> 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.
