422(不可处理的实体)使用rails进行POST

时间:2017-11-14 02:14:30

标签: javascript ruby-on-rails ruby ajax controller

我几天前刚开始在轨道上使用红宝石。我试图使用ajax将数据从html标签发送到ruby函数。

以下是我收到的错误:

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>

这是我使用javascript调用的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>

这是我的控制器:

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

我检查了很多不同的网站,但我无法将其中的任何内容与我正在处理的内容联系起来。我感谢您提供的任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

由于CSRF令牌,错误可能会导致。

尝试在控制器上添加此行。

skip_before_action :verify_authenticity_token