我有一个表单,我将其放入页面中的IFrame中。 IFrame显示轨道表单,其中包含要保存的按钮和取消链接。
我使用以下代码添加iFrame:
$('#saveAreaForm').contents().find('#cancel_save').click(function() {
$('#saveAreaForm').remove();
});
$('#saveAreaForm').contents().find('#create_area_form').bind("ajax:failure", function(xhr, status, error) {alert("failure!");});
$('#saveAreaForm').contents().find('#create_area_form').bind('ajax:success', function(xhr, status, error) {alert("failure!");});
删除表单的链接工作正常,但回调永远不会被触发。
我在控制台中看到控制器代码被触发但我无法获得成功或失败。
这是表格代码(HAML):
= simple_form_for(@area, :remote => true, :html => { :'data-type' => 'html', :id => 'create_area_form' }) do |f|
- if @area.errors.any?
#errorExplanation
%h2= "#{pluralize(@area.errors.count, 'error')} prohibited this user from being saved:"
%ul
- @area.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :name
%br
= f.text_field :name
.field
%br
= f.association :area_group
%br
.actions
= f.submit
= link_to 'Cancel', '#', {:id => 'cancel_save'}
这是控制器功能:
# POST /areas
# POST /areas.xml
def create
@area = Area.new(params[:area])
respond_to do |format|
if @area.save
format.html { redirect_to(@area, :notice => 'Area was successfully created.') }
format.xml { render :xml => @area, :status => :created, :location => @area }
else
format.html { render :action => "new" }
format.xml { render :xml => @area.errors, :status => :unprocessable_entity }
format.json { render :json => @area.errors, :status => :unprocessable_entity }
end
end
end
有什么明显的东西我可以忽略吗?
答案 0 :(得分:0)
问题是绑定语句可能是在创建DOM对象之前调用的。我通过使用live而不是bind解决了这个问题。