2011-08-29 61 views
0

我有一個表單,我把它放在頁面內的IFrame中。 IFrame顯示帶有按鈕的導軌形式以保存和取消鏈接。Rails 3.0和JQuery表單回調沒有觸發

我添加的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

我已經研究過路線文件,並且我認爲所有設置都正確(並且我知道我正在觸發正確的控制器方法)。 – gugguson

回答

0

問題是綁定語句可能在DOM對象創建之前被調用。我通過使用live而不是bind來解決問題。