通过ajax post方法创建params哈希

时间:2016-08-26 22:39:02

标签: ruby ajax sinatra params

所以我想创建一个自定义params哈希,但我不知道该怎么做。我给了一个红宝石哈希(有点)。我没有其他想法

$("#bt-dw , #bt-up").click(function (event) {
  event.preventDefault();
  var id =  $(this).parent().attr("value");
  var up = $(this).attr("value");

  $.ajax({
    type: "POST",
    url: "/vote",
    data: "{:entry_id => '" + id + "',:up => '" + up + "'}",
    success: function () {
      console.log("post successful");
    },
    error: function () {
      console.log("post unsuccessful");
    }
  });
})

后置控制器

post '/vote' do
  @entry = Entry.get!(params[:entry_id]) rescue halt(404)
  @entry.vote(request.ip, params[:up] != 'false')
end

1 个答案:

答案 0 :(得分:1)

因此,从您的评论中看起来您只是创建一个单级params哈希。

如果您想将数组或散列作为参数值发送,那将会更复杂一些。

有两种方法可以解决这个问题。

选项1:在ajax请求中将此值用于data

data: { entry_id: id, up: up }

选项2:在网址中包含相同的信息,而不是data

url: `/vote?entry_id=${id}&up=${up}`

请注意,我在这里使用ES6模板字符串;这相当于:

url: ( "/vote?entry_id=" + id + "&up=" + up )