一旦从Rails 3.1中的select_tag
中选择(更改)了一个选项,我想发送一个AJAX请求。我们可以使用:remote=>true
或:onchange => remote_function()
还是有其他方式?
答案 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: true
将data-remote="true"
添加到html元素。只需在select_tag
选项中将其添加为CSS类即可。
<%= select '', '', @coaches, {}, { data: {remote: true } } %>
请注意使用data: { remote: true }
是因为"data-remote"
不是Ruby友好的。