在rails中的javascript ajax请求无法传递值

时间:2016-08-08 12:57:49

标签: jquery ruby-on-rails ajax

我有一个rails应用程序,其中我有跟随控制器操作。

def index
   ....
   ....
      @currency = params["currency"].present? ? params["currency"] : "INR"
      @check_in_date = params["arrival_date"].present? ? params["arrival_date"] : Date.today.to_s
      @check_out_date = params["departure_date"].present? ? params["departure_date"] : (Date.today + 1).to_s
   ....
   ....
end

我有javascript,我正在尝试制作像这样的ajax请求。   filename.html.haml

  else{
    hotel_id = id.slice(6)            
    $.ajax({
      url: "/single_hotel/"+hotel_id,
      data: {check_in_date: #{@check_in_date}, check_out_date: #{@check_out_date}, longitude: #{@longitude}, latitude: #{@latitude}, rooms: #{@rooms}, adults: #{@adults}, children: #{@children}, currency: #{@currency} },
      type: 'get'
    });            
  }

当我检查chrome控制台中的sources选项卡时,我看到了这一点。

            $.ajax({
              url: "/single_hotel/"+hotel_id,
              data: {check_in_date: 2016-08-08, check_out_date: 2016-08-09, longitude: 34.854, latitude: 32.3213, rooms: 1, adults: 1, children: 0, currency: INR },
              type: 'get'
            });

当我尝试发出ajax请求时,我得到“VM18204:52未捕获的ReferenceError:未定义INR”。

此外,如果我删除货币并提出请求,我会获得以下值以便检入&看看日期。

[1] pry(#<Bookings::HotelsController>)> params
=> {"check_in_date"=>"2000",
 "check_out_date"=>"1999",
 "longitude"=>"34.854",
 "latitude"=>"32.3213",
}

有人可以帮我。

1 个答案:

答案 0 :(得分:2)

而不是这个

public ActionResult Checkout()
    {
        if (Session["cart"] == null)
            return RedirectToAction("Index");

        var checkout = new CheckoutViewModel()
        {
            Cart = (List<CartItem>)Session["cart"],
            PaymentOptions = _context.PaymentOptions.ToList(),
            ShippingOptions = _context.ShippingOptions.ToList()
        };


        return View(checkout);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Checkout(CheckoutViewModel m)
    {
        if (!ModelState.IsValid)
            return View();

        //TODO: handle data

        return RedirectToAction("OrderSuccess");
    }

试试这个

data: {check_in_date: #{@check_in_date}, check_out_date: #{@check_out_date}, longitude: #{@longitude}, latitude: #{@latitude}, rooms: #{@rooms}, adults: #{@adults}, children: #{@children}, currency: #{@currency} }