看一下这个。我有一个相当简单的表单,它使用以下语法创建:
<%= form_for([@issue, @issue_order], :remote => true) do |f| %>
由于页面上的逻辑,表单实际上是通过 javascript 调用的,如下所示:
$('#new_issue_order')[0].submit()
控制器通过执行一些逻辑处理 ajax 请求,然后抛出如下内容:
respond_to do |format|
format.js
end
处理此响应的 AJAX 位于以下 javascript 中:
$('#new_issue_order').on('ajax:success', issueOrder.processOrder)
..........
processOrder: function(e, data, status, xhr) {
$('.sign-up-errors').empty();
errors = xhr.getResponseHeader('X-Flash-Error').split(',');
for (i=0; i < errors.length; i++) {
$('.errors').append($('<p>' + errors[i] + '</p>'));
}
setTimeout(function() {
$('.errors').empty();
}, 3500);·
}
我认为这将允许它响应远程请求,但我得到的是以下错误:
ActionController::UnknownFormat
我尝试在我的视图中创建一个 new.js.erb(与它所在的新页面相对应),但我仍然遇到同样的错误。我没有尝试将我的成功处理程序 AJAX 迁移到 new.js.erb 代码,因为出于商业原因,我更愿意将我的 javascript 处理保留在我的资产中的 javascript 文件中。
如何获得无缝的 AJAX 响应?我以前做过,但是respond_to总是让我感到困惑。