Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails 3-根据虚拟属性进行验证导致异常_Jquery_Ruby On Rails_Validation_Number Formatting_Virtual Attribute - Fatal编程技术网

Jquery Rails 3-根据虚拟属性进行验证导致异常

Jquery Rails 3-根据虚拟属性进行验证导致异常,jquery,ruby-on-rails,validation,number-formatting,virtual-attribute,Jquery,Ruby On Rails,Validation,Number Formatting,Virtual Attribute,在我的一个模型中,我有一个虚拟属性,叫做currentBalance。我的视图中的ajax调用填充此属性。在该模型中,我试图验证净重是否小于或等于代表库存产品总净重的currentBalance 问题似乎是净重是一个浮点数,currentBalance属性作为字符串返回,导致异常,显示: 将浮点与字符串进行比较失败 以下是选择产品时填充currentBalance输入字段的jquery: $( ".fields" ).each( function(){ <% @curren

在我的一个模型中,我有一个虚拟属性,叫做currentBalance。我的视图中的ajax调用填充此属性。在该模型中,我试图验证净重是否小于或等于代表库存产品总净重的currentBalance

问题似乎是净重是一个浮点数,currentBalance属性作为字符串返回,导致异常,显示:

将浮点与字符串进行比较失败

以下是选择产品时填充currentBalance输入字段的jquery:

$( ".fields" ).each( function(){    
    <% @currentBals.each do |c| %>
        if( $(this).find("option:selected").text() == '<%= c.material %>' ) {   
            $(this).find("input:text[readonly]").val("<%= number_with_delimiter(c.currentBal) %>")  
        } else {
            if ($(this).find("option:selected").text() == 'Select Material'){
                $(this).find("input:text[readonly]").val("<%=  number_with_delimiter(0) %>")
            }
        }
    <% end %>    

});
我认为带分隔符格式的数字\u语句是导致问题的原因。但我希望在视图中格式化该值


在运行验证之前,如何更改验证或将currentBalance属性转换为浮点

当前余额的输入标记为文本类型。尝试将该标记更改为type

编号(
type=“number”)
对于浮点数,添加步骤属性(例如
step=“0.01”
)并更改

$(this).find("input:text[readonly]") 


所以我找到了一个解决办法,虽然我觉得有点不太对劲。在我的控制器的创建操作中,我循环遍历每个细节记录,解析currentBalance属性之外的逗号,然后对其调用.to\u f

@shipment.details.each do |d|
         d.currentBalance = d.currentBalance.delete(',').to_f
end

我更愿意将这种逻辑推进到模型中,但经过多次尝试(为了时间的利益),这种方法奏效了。如果有人知道我如何将逻辑推进到细节模型中,并确保它正确验证,我很乐意尝试

谢谢你的回复。在我将.js和view文件更改为使用数字输入后,这种方法得到了相同的结果。
$(this).find("input:number[readonly]")
@shipment.details.each do |d|
         d.currentBalance = d.currentBalance.delete(',').to_f
end