使用select_tag添加params哈希

时间:2016-05-17 00:45:28

标签: jquery ruby-on-rails

当使用没有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中发送附加参数?

1 个答案:

答案 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"