2013-02-22 80 views
0

我正尝试设置的隐藏字段值中的Rails 3无法在形式隐藏字段设置值

形式但是当我提交表单到我的数据库,这些theres没什么写领域。

还有就是我的JS:当我打开getGeocode()的返回值假

的隐藏字段的值置位。但是,当我将returnvalue设置为true时,不会进入数据库。

字段在模型中设置和工作,并且该函数可以通过form_for helper的onsubmit方法访问。

有人知道如何解决这个问题吗?

回答

0

要防止的方法,从提交我加入ev.preventDefault()与$设定值后恢复的方法(“# new_player“)。unbind('submit')。submit()

$("#new_player").submit(function(ev) { 

    ev.preventDefault(); 

    geocoder = new google.maps.Geocoder(); 
    var street = $("#player_street").val() 
    var postalcode = $("#player_postalcode").val() 
    var city = $("#player_city").val() 
    var address = street + ", " + postalcode + ", " + city 
    var lat 
    var lng 

    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     lat = results[0].geometry.location.hb 
     lng = results[0].geometry.location.ib 
     $("#player_lat:hidden").val(lat) 
     $("#player_lng:hidden").val(lng) 

     $("#new_player").unbind('submit').submit() 

     } else { 
     alert("Dein Player konnte nicht eingetragen werden, bitte probiere es noch einmal.") 
     return false 
     } 
    }) 
}) 
0
geocoder.geocode(... 

是异步函数。所以它会在一段时间后收到响应并为字段设置值,而getGeocode()函数的其余代码仍在运行。

如果您在函数中返回true,则在地理编码器返回结果之前提交表单。如果返回false,则提交被取消并设置值。

所以,你需要在回调提交数据,是这样的:

$(#the_form_id).submit(function() { 

    geocoder = new google.maps.Geocoder(); 
    var street = $("#player_street").val() 
    var postalcode = $("#player_postalcode").val() 
    var city = $("#player_city").val() 
    var address = street + ", " + postalcode + ", " + city 
    var lat 
    var lng 


    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     lat = results[0].geometry.location.hb 
     lng = results[0].geometry.location.ib 
     $("#player_lat").val(lat) 
     $("#player_lng").val(lng) 
     $(#the_form_id).unbind('submit').submit(); 
    } else { 
     return false 
     alert("Dein Player konnte nicht eingetragen werden, bitte probiere es noch einmal."); 
    } 
    }); 
    return false; 
}) 
+0

这就是问题所在。地理编码方法是异步的。我尝试实现回调或其他东西。 – bernheart 2013-02-22 18:25:46