Ruby on Rails,jquery没有为模型

时间:2017-12-07 22:02:52

标签: jquery ruby-on-rails ruby activerecord

我的Ruby on Rails应用程序中有一个基本表单。其中一个字段是根据其他字段计算的。如果验证失败,并且呈现new操作,则会消除计算值。

class Model < ApplicationRecord

end

这是我的控制者:

class ModelsController < ApplicationController

    def create
        @model = Model.new(secure_params)

        if @model.save
          redirect_to @model
        else
          render 'new'
        end
    end

    def secure_params
       params.require(:model).permit(:count,:unitPrice,:totalPrice);                            
    end

end

这是new.html.erb表单:

<%= form_with model: @model, local: true do |form| %>
    <p>
      <%= form.label :count %><br>
      <%= form.number_field :count, id:'count' %>
    </p>
    <p>
      <%= form.label :unitPrice %><br>
      <%= form.number_field :unitPrice, id:'unitPrice' %>
    </p>

    <p>
      <%= form.label :totalPrice %><br>
      <%= form.number_field :totalPrice, id:'totalPrice' %>
    </p>

    <p>
      <%= form.submit %>
    </p>
<% end %>

<script>

  function calculateTotalPrice(){

     var count=$("#count").val();
     var unitPrice=$("#unitPrice").val();

     if(unitPrice && count ){
        var totalPrice=parseFloat(unitPrice*count).toFixed(2);
        $("#totalPrice").val(totalPrice); 
     }
  }

  $(document).ready(function(){

      $("#count").bind('keyup mouseup',calculateTotalPrice);
      $("#unitPrice").bind('keyup mouseup',calculateTotalPrice);

  });

</script>

当我提交表单时,如果验证正常,则没有问题。但是如果模型有错误,则从模型中删除totalPrice值。我认为插入totalPrice字段的值不会注入Ruby模型。

我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

jQuery看起来很好。

它可能被阻止,因为数字输入默认只接受整数值。将参数步骤设置为“any”将允许十进制值。尝试:

<%= form.number_field :totalPrice, id:'totalPrice', step: :any %>

另外,仔细检查totalPrice字段在Model中的类型是否为整数,而不是float或decimal。