我几天前刚开始在轨道上使用红宝石。我试图使用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
我检查了很多不同的网站,但我无法将其中的任何内容与我正在处理的内容联系起来。我感谢您提供的任何帮助。谢谢。
答案 0 :(得分:1)
由于CSRF令牌,错误可能会导致。
尝试在控制器上添加此行。
skip_before_action :verify_authenticity_token