Jquery не отправляет Rails правильный формат из Ajax - PullRequest
0 голосов
/ 16 ноября 2011

Хорошо, так: Rails 2.1, используя jRails и jQuery 1.7.

У меня есть форма, которую я хочу отправить с ajax; это внутри фантастического ящика (хотя я не думаю, что это что-то изменит):

<% form_tag({ :action => :mail_by_user }, :id => "order_problem_form") do %>
  ...
  <%= submit_tag "Submit", :class => "downloaded" %>
<% end %>

У меня есть application.js:

$(document).ready(function () {
  ...
$("#order_problem_form").submit(function() {
  $.ajax({
    type: "POST",
    beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "text/javascript"); },
    dataType: "script",
    url: this.action,
    data: this.serialize()
});

return false;

});

И мой контроллер:

def mail_by_user
  #here we send to delayed_job
  OrderMailer.delay.deliver_problem_with_order(params)
  respond_to do |format|
    format.html
    format.js { render :layout => false }
   end
end

Все это работает, за исключением того, что он не отправляет запрос ajax как XHR, поэтому всегда вызывается format.html. Я добавил в запрос beforeSend, что рекомендует каждый пост и блог об этой проблеме.

Я не уверен, что делаю неправильно - у кого-нибудь есть идеи? Лучшее, о чем я могу подумать, это то, что jRails делает что-то, что мешает, но AFAIK это в основном для подключения remote_fors и встроенных js rails. Я не знаю, что это может сделать с моей jquery.

1 Ответ

0 голосов
/ 16 ноября 2011

Вы можете сделать что-то вроде этого:

      $("#purchase_cart_order").submit(function(event) {
        // DISABLE THE SUBMIT BUTTON (prevent double clicking)
        $('.downloaded').attr("disabled", "disabled");

        Namespace.order.submitForm();

        return false;
      });

где Namespace.order.submitForm (); звонит ваш AJAX вызов

...