2012-02-12 18 views
0

私はHTMLで作成したシンプルな友達紹介フォームです。正しくデータをサーバーに返信し、正しく送信しています。RailsでAJAXフォームの投稿に応答するにはどうすればよいですか?

がここにjavascriptのコードだ(それはCoffeeScriptの中にあります):

$('#tell-a-friend-form').submit (e) -> 
    e.preventDefault() 
    console.log "submitted form." 

    $.ajax 
     url: 'home/tellafriend' 
     type: 'POST' 
     data: 
     name: $(this).find("input[name='name']").val() 
     emails: $(this).find("input[name='emails']").val() 
     message: $(this).find("textarea[name='message']").val() 
     success: (result) -> 
     alert("ok") 
     $('#tell-a-friend-form').find(".loading-icon").hide() 
     error: (result) -> 
     alert("Sorry, we couldn't send your message.")  
     $('#tell-a-friend-form').find(".loading-icon").hide() 
     $('.tell-a-friend-submit').removeAttr("disabled") 

    $(this).find(".tell-a-friend-submit").attr("disabled", "disabled") 
    $(this).find(".loading-icon").show() 

を今、コントローラでは、私はそうブールの多分「送らOK」タイプ以外、まったくのメッセージを返す必要はありません。クライアント側のjavascriptは "成功"か "エラー"かを知ることができます。

現在、クライアント側では毎回「エラー」が発生します。私は、コントローラ側で間違ってやってる

def tellafriend 
    #send the actual email message. to be implemented. 

    respond_to do |format| 
    format.json { render :json => "success" } 
    end 
end 

何か:

は、ここに私のコントローラのコードですか?問題はここにあると確信しています。 「成功」ビットを発したい場合は、何を返す必要がありますか?

+0

何も返すことはできません...とにかく、ajaxリクエストがコントローラコードにヒットしますか?私は問題はそこにないと思う。 – gdoron

+0

私はRubyがいつも最後の行を返すと思った。これは本当に私を助けません。編集:**はい**適切なデータと共にコントローラコードがヒットします。問題はコントローラのリターンにあります。 –

+0

ohhh私は 'Ruby'をまったく知りません... – gdoron

答えて

2

リクエストをしたときにログには何が表示されますか?これは、このようなことを診断する上で重要です。私は通常、この問題を解決することを考えることができる3つの事があります。

は、明示的に明示的にあなたのAJAX呼び出しからJSONを要求するのと同じくらい簡単かもしれませんJSON

を要求:

$.ajax 
    url: 'home/tellafriend' 
    type: 'POST' 
    dataType: 'json' 
    ... 

あなたをチェックルート:

あなたのルートがPOSTリクエストに応答するように設定されていない可能性があります。 'tellafriend'が投稿を受け入れるための経路を確実にしてください。クイックチェックとして、あなたは「GET」またはReturn

/home/tellafriend.json有効なオブジェクト

の代わりに、単にあなたが帰国しようとする場合があり、「成功」を返すの来場にごAJAXリクエストを変更することができます実際のオブジェクト:

respond_to do |format| 
    format.json { render :json => {:message => "success"} } 
end 
+0

第3のビットは魅力でした。私は有効なオブジェクトを返さなければならなかった。 –

+0

Ty!他の質問からの回答は私の問題を解決しませんでした。私は ':json =>" success "'のようなことをしていましたが、有効なjsonオブジェクトを作成しないと思います –

関連する問題