2017-11-14 7 views
0

며칠 전 레일에서 루비를 사용하기 시작했습니다. 아약스를 사용하여 html 태그에서 루비 함수로 데이터를 보내려고합니다.422 (Unprocessable Entity) 레일을 사용한 POST

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

내가 HTML 버튼의 onclick 속성을 사용하여 자바 스크립트 함수를 호출 오전 : 여기

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

을 내 AJAX 호출이 자바 스크립트를 사용 :

여기

내가 점점 오전 오류입니다
<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> 

내 컨트롤러는 다음과 같습니다.

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

그리고 여기 내 루비 기능입니다 :

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를 수정해야합니다. –