Javascript 使用Rails 3.1中的JQuery下拉框发布到控制器

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

我在搜索控制器的索引视图上有以下HTML下拉框。我想根据dropbox选择更新视图。我需要以某种方式将选择传递给控制器

<!-- 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')) %>
);