2016-04-14 31 views
1

私は基本的に、データがajaxを使用してポスト経由でコントローラに送信されるフォームを持っています。私はそれを正しく送信していると思うが、私はコントローラでそれを使うことができない。事前にJSONデータをajax経由でrailsアクションに送信する方法

Submitting the form using ajax request:

$('#compose-form').submit(function() { 
var valuesToSubmit = $(this).serialize(); 
$.ajax({ 
    type: "POST", 
    url: $(this).attr('action'), 
    data: valuesToSubmit, 
    dataType: "JSON" 
}).success(function(json){ 
    $.each(json, function (key, data) { 
     var display; 
     if(data){ 
      display = "Mail delivered sucessfully!" 
     } 
     else{ 
      display = "Mail can't be delivered right now, please try again later!" 
     } 
     $.notify({ 
       icon: 'pe-7s-science', 
       message: display 
     },{ 
       type: 'info', 
       delay: 0, 
       placement:{ 
       from: 'bottom', 
       align: 'right' 
     } 
     }); 
     }); 
}); 
return false; // prevents normal behaviour 
}); 

The action in my controller

def send 

to = params[:to] 
cc = params[:cc] 
sub = params[:sub] 
body = params[:body] 

@mail = view_context.sendMail(to, cc, subj, body) 

if @mail.deliver! 
@wapas = true 
else 
@wapas = false 
end 

redirect_to 'mail/inbox' if(@wapas) 
respond_to do |format| 
format.json { render json: @wapas.to_json } 
end 

end 

I have also defined the post path in my routes.rb

ありがとう:

Error: wrong number of arguments (given 1, expected 0)

MY CODE:私のようなエラーを取得しています!

+0

これはどこから来たのですか? ---- @mail = view_context.sendMail(to、cc、subj、body) - それはチュートリアルで見ましたか? ActionMailerを使って電子メールや他の宝石を送っていますか? – trh

+0

私は今、メール宝石を使っています...そして私はそれを使用しました。私はメール配送方法からヘルパー機能を作っていました....まあ、アクションの名前を変更するようなことはトリックでした....ありがとう返信、私は提案に開放されています! @trh –

答えて

2

sendという名前のメソッドを使用しないでください。ruby自体には、この名前の非常にコアのメソッドがあります:Object#sendオーバーライドしていて、他の内部のものが呼び出して失敗しています。

+1

これを使用して、いくつかの行を変更すると、私が望んでいた...ありがとう! @smathy –

+0

ようこそ。 – smathy

関連する問題