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.
})