2012-11-24 47 views
2

我想用coffeescript和jquery做單個帖子,但我的腳本沒有處理成功回調。我的ajax帖子與coffeescript不處理成功回調

* cards_controller.js.coffee *

if $('form').attr('action') == '/cards' alert "Hey ho" $('#add_card').click (e) -> 
    e.preventDefault() 
    $.ajax '/cards', 
     type: 'PUT' #Tried POST also 
     dataType: 'json' 
     error: (jqXHR, textStatus, errorThrown) -> 
     console.log textStatus 
     success: (res) -> 
     console.log "Card name: " + data.card.code + "\nPoints: " + data.points 
     complete: (jqXHR, textStatus) -> 
     console.log "Status: " + textStatus 

index.html.erb

<%= form_tag url_for(:controller => 'cards', :action => 'create'), :remote => true %> 

並且將所生成JavaScript是以下各項之一:

(function() { 

    if ($('form').attr('action') === '/cards') { 
    alert("Hey ho"); 
    $('#add_card').click(function(e) { 
     e.preventDefault(); 
     return $.ajax('/cards', { 
     type: 'POST', 
     dataType: 'json', 
     error: function(jqXHR, textStatus, errorThrown) { 
      return alert(textStatus); 
     }, 
     success: function(res) { 
      console.log("Card name: " + data.card.code + "\nPoints: " + data.points); 
      return $('#card-list > tbody:last').append('<tr>test</tr><tr>uauauiua</tr>'); 
     }, 
     complete: function(jqXHR, textStatus) { 
      return console.log("Status: " + textStatus); 
     } 
     }); 
    }); 
    } 

}).call(this); 

* cards_controller .rb *

def create 
    card = Card.find_by_code(params[:code]) 

    if card && card.user.nil? 
     current_user.add_card(card) 
    else 
     return render :status => 401, :json => { :message => "O cartão não existe ou já está cadastrado"} 
    end  

    respond_to do |format| 
     format.js { render json: { :card => card, :points => card.card_business_points.sum("points") } , content_type: 'text/json' } 
    end 
end 

該請求成功地連接到控制器並正確創建卡。問題是在Chrome上調試它似乎不處理回調並且不記錄。

請問有人可以幫助這個嗎?

+0

您不能直接使用方法'PUT'。 [我要如何將數據用導軌的jQuery] [1] [1]:http://stackoverflow.com/questions/907910/how-do-i-put-data-to- rails-using-jquery – Oleg

+0

@Oleg:你會注意到這個問題是從2009年開始的(例如幾百萬年前的互聯網)。 Rails 3很樂意與PUT一起工作。 –

+0

我也試過帖子,但沒有成功! – felipeclopes

回答

4

我剛想清楚是什麼問題。

在使用jQuery ajax函數進行提交時,我的coffeescript忘記將數據字段添加到要提交的內容中。

最終的腳本是類似這樣的:

(document).ready -> 
    if $('form').attr('action') == '/cards' 
     $('#add_card').click (e) -> 
      e.preventDefault() 
      $.ajax '/cards', 
       type: 'POST' 
       dataType: 'json' 
       data: { code: $("#code").val() } 
       error: (jqXHR, textStatus, errorThrown) -> 
        alert textStatus 
       success: (data, textStatus, jqXHR) -> 
        console.log "Card name: " + 
           data.card.code + "\nPoints: " + data.points 

謝謝你的幫助,我無法弄清楚,爲什麼當我沒傳遞的數據參數沒有被稱爲我的回調。

問候!