2012-07-02 30 views
0

嘗試使用js.erb文件捕獲控制器方法上的成功/錯誤。資產已創建,我從jQuery獲得警報,但是我希望從ERB(第一個代碼片段)獲得的消息不會顯示。我做錯了什麼?Rails 3 js.erb jQuery不更新頁面上的元素

create_asset.js.erb

<% if @asset.errors.any? %> 
    var errors = $('<ul />'); 
    errors.append('<li><%= escape_javascript(error) %></li>'); 
    jQuery('#create_asset_message').html(errors); 
<% else %> 
    jQuery("form#create_asset_form").before('<div id="flash_notice"><%= escape_javascript(flash.delete(:notice)) %></div>'); 
    jQuery('form#create_asset_form')[0].reset(); 
<% end %> 

create_asset控制器方法

def create_asset 
    @asset = Asset.new(:name     => params[:name], 
         :description   => params[:description], 
         :serial_number   => params[:serial_number], 
         :asset_manufacturer_id => params[:asset_manufacturer_id], 
         :asset_model_id  => params[:asset_model_id], 
         :image_filename  => params[:image_filename]) 

    respond_to do |format| 
     format.js 
    end 
    end 

視圖[其局部]:

<%= form_tag create_asset_assets_path, :method => :get, :id => "create_asset_form", :remote => true do %> 
    <div class="row-fluid"> 
     <h3>Choose your template: </h3> 
     <%= collection_select(:asset, :id, @asset_templates,:id,:name, {:prompt => "Select your template..."}, {:class=>'chzn-select', :onchange => "update_asset_form_div(this.value)"}) %> 
    </div> 
    <br/> 
    <%= render :partial => "create_asset_form", :object => @asset_template, :manufacturers => @manufacturers %> 

    <%= submit_tag "Create Asset", :disable_with => "Please wait..." %> 

    <div id="create_asset_message"></div> 
<% end %> 

jQuery的AJAX

jQuery('form#create_asset_form').submit(function() { 
    alert("You got here") 
    jQuery.ajax({ 
     url: "/assets/create_asset.js", 
     type: "GET", 
     data: {"name"   : jQuery('#name').val(), 
      "description" : jQuery('#description').val(), 
      "serial_number" : jQuery('#serial_number').val(), 
      "asset_manufacturer_id" : jQuery('#manufacturer_select').val(), 
      "asset_model_id"  : jQuery('#models_select').val(), 
      "image_name" : jQuery('#image_name').val()}, 
     dataType: "html" 
    }); 
    return false; 
}); 

回答

1

它確實有助於有數據類型設置爲腳本...

我的AJAX查詢應該有這個樣子的(與datatype: "script"而不是"html"):

jQuery('form#create_asset_form').submit(function() { 
    alert("You got here") 
    jQuery.ajax({ 
     url: "/assets/create_asset.js", 
     type: "GET", 
     data: {"name"   : jQuery('#name').val(), 
      "description" : jQuery('#description').val(), 
      "serial_number" : jQuery('#serial_number').val(), 
      "asset_manufacturer_id" : jQuery('#manufacturer_select').val(), 
      "asset_model_id"  : jQuery('#models_select').val(), 
      "image_name" : jQuery('#image_name').val()}, 
     dataType: "script" 
    }); 
    return false; 
}); 
相關問題