Ruby on rails 如何从javascript向控制器ruby方法传递参数

Ruby on rails 如何从javascript向控制器ruby方法传递参数,ruby-on-rails,Ruby On Rails,我的视图中有一个类似这样的选择列表 <select class="sel_list_size" id="product", onchange="build_url('dynamic_div')"> <%= options_for_select(get_product) %> </select> 我有一个javascript来调用该方法 function build_url(div_var) { var selected_index = pro

我的视图中有一个类似这样的选择列表

<select class="sel_list_size" id="product", onchange="build_url('dynamic_div')">
    <%= options_for_select(get_product) %>
</select>
我有一个javascript来调用该方法

function build_url(div_var) {
    var selected_index = product.selectedIndex;
    var selected_value = product.options[product.selectedIndex].text;
    var selSpan = document.createElement('span');
    $.ajax({
      url: '/get_inner_dir_of_products',
      type: 'GET',
      data: { selected_value }
    })
    // code to build a select list goes here
}

我知道这个ajax调用不起作用。如何从视图中调用控制器方法?

routes.db
文件中,需要将希望从javascript访问的路径连接到控制器方法:

get '/get_inner_dir_of_products' => 'youramazingcontroller#get_inner_dir_of_products'
现在,当您在
/get\u internal\u dir\u of_products
处调用服务器时,Rails知道将其发送到控制器的get\u internal\u dir\u of_products方法

产品的
get\u internal\u dir\u
方法可以使用
params
对象访问传递给该方法的参数

@some_value = params[:somevalue]
您可以在javascript中设置参数的名称:

$.ajax({
  url: '/get_inner_dir_of_products',
  type: 'GET',
  data: { somevalue: selected_value }, 
  // etc.
})   

你差点就成功了。现在,您只需要1)定义一个适当的路由,该路由将解析对该控制器操作的请求,2)从
params
对象获取操作参数。哦,虽然将其剥离到
curl
可能可行,但您需要将其重写为使用Net::HTTP或RestClient或法拉第(或其他)它有效的方法。谢谢
$.ajax({
  url: '/get_inner_dir_of_products',
  type: 'GET',
  data: { somevalue: selected_value }, 
  // etc.
})