在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 } } %>
答案 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'
});