将Javascript传递给POST上的Rails控制器+;可点击谷歌地图标记
在我的Rails应用程序中,我使用API允许用户搜索以下位置: javascript代码()返回一个JSON散列,并使用下拉框中的选项放置一个新标记。我有一个现在什么都不做的标记的监听器,这就引出了我的问题将Javascript传递给POST上的Rails控制器+;可点击谷歌地图标记,javascript,ruby-on-rails,google-maps,Javascript,Ruby On Rails,Google Maps,在我的Rails应用程序中,我使用API允许用户搜索以下位置: javascript代码()返回一个JSON散列,并使用下拉框中的选项放置一个新标记。我有一个现在什么都不做的标记的监听器,这就引出了我的问题 如何使标记的“click”事件将结果散列(在本例中为“place”)传递给rails控制器? 更一般地说,如何将JavaScript数据传递给Rails控制器? 我看了其他答案,找不到解决办法。任何帮助都将不胜感激 谢谢 ~Dan B @thoughtpunchJQuery可以用所有与aj
@thoughtpunchJQuery可以用所有与ajax相关的方法序列化数据;您可以使用此选项将原始json发布到服务器:
$.post("/foo", {place: {foo: "bar"}})
在控制器上:
def action
render :text => "Got: #{params[:place]}" # output: 'Got : {"foo":"bar"}'
end
您可能希望只发布您关心的位置的字段,或者使用
JSON.parse
取消JSON字符串序列化,以便在服务器端进行操作。您可以使用jQuery执行“获取”并传递所需的参数。因此,根据您的要点,您可以创建一个地址字符串。在您的控制器中,您将发送回将在回调中处理的响应。您可以发回JSON并使用该客户端执行某些操作,或者只发回html进行插入
google.maps.event.addListener(marker, 'click', function() {
// maybe a loader here?
// $('#reviews').html('loading reviews for ' + address + '...');
$.get('/reviews', {address: address}, function(data) {
$('#reviews').html(data);
});
});
这些数据可以是任何你想要的参数。如果你愿意,你可以把整个地方都派过去<代码>'{place:place}'