Rails select_tag - 如何发送ajax请求?

时间:2012-07-23 18:35:42

标签: ruby-on-rails ruby ajax

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

3 个答案:

答案 0 :(得分:6)

你绝对应该使用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选项。希望这会有所帮助。

答案 1 :(得分:1)

你必须使用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/

答案 2 :(得分:1)

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

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

请注意使用data: { remote: true }是因为"data-remote"不是Ruby友好的。