如何将数据添加到Rails Ajax请求

时间:2018-11-07 07:05:13

标签: ruby-on-rails rails-ujs

在发出data请求时,是否可以在Rails 5.1+(无jQuery)应用程序中将Rails.ajaxGET一起使用?还是data仅适用于POST个?

我有以下

Rails.ajax
      url: "/pages?title=lorem}"
      type: 'GET'

我宁愿拥有

Rails.ajax
      url: 'pages'
      type: 'GET'
      data: { title: 'lorem' }

但是当我尝试时,我的参数看起来像{ "object Object"=>nil, "controller"=>"pages", "action"=>"index"}

添加dataType: 'json'dataType: 'text'似乎都改变了传递给控制器​​的参数。

1 个答案:

答案 0 :(得分:0)

可以在GET请求中使用数据;但是,Rails.ajax simply appends the data到URL。

if options.type is 'GET' and options.data
  if options.url.indexOf('?') < 0
    options.url += '?' + options.data
  else
    options.url += '&' + options.data

除了可读性之外,使用data选项似乎没有优势。您自己将数据附加到url的第一种技术是在后台执行与Rails.ajax相同的操作。

Rails.ajax
  url: "/pages?title=lorem"
  type: 'GET'

但是,这也类似于how Rails.ajax handles data for POST requests。它不会对数据执行任何转换。数据原封不动地传递到XMLHttpRequest。像这样通过options.data照原样发送数据。

xhr.send(options.data)