Rails select_tag - 如何发送ajax请求?

问题描述:

从Rails 3.1中的select_tag中选择(更改)一个选项后,我想发送一个AJAX请求。我们可以使用:remote=>true:onchange => remote_function()还是有其他方法?Rails select_tag - 如何发送ajax请求?

你一定要用jQuery来做到这一点(使用不显眼的方法来尽可能保持干净)。在你的js文件,你应该有这样的事情......

$('#select_tag_id').change(function(){ 
    $ajax({ 
    url: "remote_action_in_your_controller", 
    type: "GET", 
    data: {select_tag_value: $('#select_tag_id option:selected').text()}, 
    }) 
}); 

这是简单,因为它应该是,如果你只是想打电话给你的控制器上的远程操作(请注意,我通过选择价值选项,因为你可能想要这个值做一些事情)。如果在执行ajax调用之后需要执行某些操作,请使用succes选项。希望这可以帮助。

+2

我想运行一个动作,它通过ajax发送的数据执行一些计算,然后在同一页上渲染一个局部视图。这怎么可以在这里完成? – 2012-07-25 14:31:30

+1

应该是'$ .ajax' – 2016-06-17 17:41:43

你必须用JQuery来做到这一点。事情是这样的,当文件已准备就绪,:

$('#your_select_tag').change(function() { 
    $.ajax({ type: "GET", 
      url: "http://your_url/", 
      success : function(text) { 
       alert('success') 
      } 
    }); 
}); 

看到该文档:http://api.jquery.com/change/http://api.jquery.com/jQuery.ajax/

+0

我想运行一个动作,它通过ajax发送的数据执行一些计算,然后在同一页面上渲染一个局部视图。这怎么可以在这里完成? – 2012-07-25 14:31:56

+0

您可以在更改功能中进行计算。之后,你可以创建一个app/views/controllers/action.js.erb,你可以在你的文件中做你想做的。这里有一个例子:http://*.com/questions/300498/how-do-i-include-html-in-a-js-rails-response。 – Dougui 2012-07-25 14:46:54

+0

对不起,我想我可能不清楚。我想从select_tag中选择选项(比如'foo')给我的控制器动作,它会查找数据库中'foo'的细节,将它们存储在映射中,然后同一控制器动作将呈现一部分显示地图上的细节。这如何实现? – 2012-07-25 15:14:27

remote: truedata-remote="true"添加到html元素。只需将其添加为select_tag选项中的CSS类即可。

<%= select '', '', @coaches, {}, { data: {remote: true } } %> 

请注意data: { remote: true }被使用,因为"data-remote"不红宝石友好。