2017-11-14 12 views
0

数日前にレール上でRubyを使用し始めました。私はhtmlタグからajaxを使ってルビ関数にデータを送信しようとしています。ここで422(Unprocessable Entity)レールを使用したPOST

は、私が取得していますエラーです:

POST http://localhost:3000/ajax/ounces 422 (Unprocessable Entity) 

私はHTMLボタンのonclick属性を使用してJavaScript関数を呼び出しています:

<button class="btn btn-primary" style="width:24%;" type="button" onclick="ounces_fn()">Fluid Ounces</button> 

ここに私のAJAX呼び出しはJavaScriptを使用している:

<script> 
    function ounces_fn() { 
     var meas1 = $("#m1").val().replace(/^\D+/g, ''); 
     var meas2 = $("#m2").val().replace(/^\D+/g, ''); 
     var meas3 = $("#m3").val().replace(/^\D+/g, ''); 
     var meas4 = $("#m4").val().replace(/^\D+/g, ''); 
     $.post('/ajax/ounces', { 
      num1: meas1, 
      num2: meas2, 
      num3: meas3, 
      num4: meas4 
     }, function(data) { 
      alert("success!"); 
      $("m1").val(data[0].result.toString() + "oz."); 
      $("m2").val(data[1].result.toString() + "oz."); 
      $("m3").val(data[2].result.toString() + "oz."); 
      $("m4").val(data[3].result.toString() + "oz."); 
     }); 
    } 
</script> 

ここは私のコントローラです:

post '/ajax/ounces' => 'welcome#ajax_ounces' 

そして、ここに私のRubyの機能である:

def ajax_ounces 
    numArray = [params["num1"].to_f, params["num2"].to_f, params["num3"].to_f, params["num4"].to_f] 
    returnArray = Array.new(4); 
    i = 0 

    while i < numArray.length do 
     returnArray[i] = numArray[i]/30 
     i += 1 
    end 

    respond_to do |format| 
      format.json {render :json => {:result => returnArray}} 
    end 
end 

私は多くの異なるサイトをチェックし、私は私が働いていたものに、それのいずれかを関連付けることができませんでした。私はあなたが与えることができる任意のヘルプに感謝します。ありがとうございました。

答えて

0

CSRFトークンのためにエラーが発生する可能性があります。

コントローラの上にこの行を追加してください。

skip_before_action :verify_authenticity_token 
+0

私はそれが簡単だったとは信じられません。ありがとうございます。あなたは私に多くの時間を救った。今私はちょうど私のルビー関数xDを修正する必要があります –

関連する問題