Javascript 使用Rails 3.1中的JQuery下拉框发布到控制器
我在搜索控制器的索引视图上有以下HTML下拉框。我想根据dropbox选择更新视图。我需要以某种方式将选择传递给控制器Javascript 使用Rails 3.1中的JQuery下拉框发布到控制器,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我在搜索控制器的索引视图上有以下HTML下拉框。我想根据dropbox选择更新视图。我需要以某种方式将选择传递给控制器 <!-- index.html rendered from Search/Index --> <select id="search_params" name="search[params]"> <option value="tacos">tacos</option> <option value="pizza"&g
<!-- index.html rendered from Search/Index -->
<select id="search_params" name="search[params]">
<option value="tacos">tacos</option>
<option value="pizza">pizza</option>
</select>
此Javascript应在选择时以某种方式将下拉框选项发布到控制器:
$("#search_params").change(function() {
var state = $('select#search_params :selected').val();
if(state == "") state="0";
//Send the selection to the controller Search controller somehow
// and then render a new view immediately ?
//I AM NOT GOOD WITH COMPUTER
})
return false;
});
我看了几十个其他Rails+JQuery示例、jQueryAPI文档等,找不到简单问题的答案,或者我只是想得太多了
无论如何,提前谢谢你的帮助!
~Dan我不是Ruby/Rails的人,但我知道jQuery 我想你想要像这样的东西
$("#search_params").change(function() {
var state = $('select#search_params :selected').val();
if(state == "") {
state="0";
}
//Call jQuery AJAX
$.ajax({
url:'/path/to/your/controller/action',
type:'POST',
data:'search=' + state,
success: function(data) {
alert(data);
},
error: function() {
alert('Stuff went wrong');
}
});
return false;
});
希望这有帮助,并有一个阅读的
我也不确定你是如何从控制器返回数据的?是否有相应的视图呈现msg
?签出jQuery.ajax()文档:
您可能需要将其放在application.js的顶部(或者这可能只是Rails 2.x的要求):
我将jQuery.ajax()设置为在服务器响应中使用原始javascript代码
我有我的正常html模板呈现部分。或者,所有HTML都被抽象为一个部分,而不是一个模板
javascript模板将执行以下操作:
$("div#some_id").html(
<%= escape_javascript(render(:partial=>'partial_name')) %>
);
$(“div#some_id”).html(
“部分名称”))%%>
);
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
jQuery.ajaxSetup({
'beforeSend': function(xhr){
xhr.setRequestHeader("Accept", "text/javascript");
var token = $("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
}
});
$("div#some_id").html(
<%= escape_javascript(render(:partial=>'partial_name')) %>
);