Хорошо, так: 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.