当使用没有Rails UJS的jQuery时,如果我想在用户更改select_tag中的值时添加其他参数,我可以这样做:
$.ajax({
type: 'get',
data: {
task: {
task_category_id_is: 1,
task_category_date_id_is: 2
}
},
url: '/tasks',
success: function(response){
console.log(response);
}
});
但是,我正在尝试使用Rails UJS,但除了select_tag的name属性之外,我无法添加其他参数。我尝试使用'ajax:beforeSend'钩子,但它没有添加额外的参数:
$dashboard.on('ajax:beforeSend', '[name="task_category_date_id_is"]', function(xhr, settings) {
xhr.data = $.extend(xhr.data, $(this).data('dependency'));
return true;
})
我也尝试过使用data-params属性:
select_tag "task_category_date_id_is", options_for_select([ ["Today", "0"], ["Yesterday", "1"], ["Next 7 Days", "2"] ]), remote: true, 'data-params' => {task_category_id_is: 1}, 'data-url' => tasks_path
在这种情况下,最终发送到服务器的是:
params = ActionController::Parameters (4 element(s))
'task_category_date_id_is' = "1"
'{:task_category_id_is' = ">1}"
'action' = "index"
'controller' => "tasks"
你看到它是如何显示的:
'{:task_category_id_is' = ">1}"
这是错误的。我想要这个:
'task_category_id_is' = "1"
如何使用Rails UJS在select_tag中发送附加参数?
答案 0 :(得分:0)
好的,我在github上找到了答案:https://github.com/rails/jquery-ujs/pull/307
它提供了一个如何运作的例子:
<a href="/somewhere" data-remote=true data-method="post" data-params="my_value=hello">Click</a>
你必须传递data-params字符串,而不是散列:
'data-params' => "task_category_id_is=1"