将嵌套参数传递给ajax get请求

时间:2018-02-08 04:16:34

标签: ruby-on-rails

在Rails 5.1应用程序(没有jQuery)中,如何通过GET ajax请求传递嵌套参数?

我有以下

Rails.ajax({
  url: select.getAttribute('data-url') + "?xxx",
  type: "GET"
});

如果我在我的控制器

中替换xxx,例如pippo=pluto
params[:name] #=> "pluto"

但是,在我的控制器中,我需要能够访问嵌套参数,如下所示。

params[:user][:name] #=> "pluto"

这似乎是一个简单的问题,但我找不到解决方案。

这是我的JS

  document.addEventListener('turbolinks:load', function() {
    var select = document.querySelector("select[name='user[name]']")
    if(select.options[select.selectedIndex].value) {

      Rails.ajax({
        url: select.getAttribute('data-url'),
        type: "GET",
        data: {
          user: {
            name: select.options[select.selectedIndex].value
          }
       }
      });
    }
  });

生成(始终选择用户[:名称])

{"object Object"=>nil, "controller"=>"steps", "action"=>"index"} permitted: false>

查询字符串工作正常(但很难看)

Rails.ajax({
        url: select.getAttribute('data-url') + '?user[name]=' + select.options[select.selectedIndex].value,
        type: "GET"
      });

副问题:首先要避免ajax请求是否有另一种方法可以在加载页面时自动触发下面选择的请求?目前,只有在所选选项更改

时才会触发
<%= f.select :user, MyUsers.all,
{ data: { remote: true, url: duplicate_users_path } } %>

1 个答案:

答案 0 :(得分:1)

在ajax中使用数据选项(推荐)

Rails.ajax({
  url: select.getAttribute('data-url'),
  type: 'GET',
  data: {
    users: {
      pippo: 'pluto',
      pippo2: 'pluto2'
    }
  }
});

或查询字符串为数组

Rails.ajax({
  url: select.getAttribute('data-url') + '?users[pippo]=pluto&users[pippo2]=pluto2',
  type: 'GET'
});