0

さて、jRails と jQuery 1.7 を使用した Rails 2.1 です。

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が干渉する何かをしていることですが、私の知る限り、それは主にremote_forsとインラインjs railsのものを接続するためのものです。それが私のjqueryに何をしているのかわかりません。

4

1 に答える 1

0

次のようなことができます。

      $("#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呼び出しを呼び出しています。

于 2011-11-16T03:34:53.603 に答える