我有一个带有小数点列的简单模型
class CreateCourses < ActiveRecord::Migration[6.0]
def change
create_table :courses do |t|
t.decimal :fee, precision: 12, scale: 2
end
end
end
class Course < ApplicationRecord
validates :fee, presence: true, numericality: { greater_than: 1, less_than: 1000 }
end
<%= simple_form_for @course do |f| %>
<%= f.input :fee %>
<%= f.button :submit %>
<% end %>
如果用户以表格形式输入美元符号,该如何删除?目前,它给了我这个错误Fee can't be blank and Fee is not a number
。我尝试了以下操作,但它给了我另一个错误undefined method delete for 0.5e1:BigDecimal
class Course < ApplicationRecord
validates :fee, presence: true, numericality: { greater_than: 1, less_than: 1000 }
before_validation :clean_fee
private
def clean_fee
self.fee = fee.delete('$ ,')
end
end
答案 0 :(得分:1)
我在应用中使用 [OutputCache(Duration = 3600, VaryByParam = "model.Content.UpdateDate.Ticks",
Location = OutputCacheLocation.Server)]
public override ActionResult Index(RenderModel model)
{
return (model)
}
来获取成本和数量,对我来说很好用!
答案 1 :(得分:0)
如果用户无法输入$符号,会不会更容易?
您可以使用正则表达式并将输入限制为数字和小数:
(\ d +。\ d + | \ d + |。\ d +)
答案 2 :(得分:-1)
由于费用列是数据类型decimal
,因此我认为您应该使用数字字段而不是文本字段。将您的<%= f.input :fee %>
更改为<%= f.number_field :fee %>
即可解决问题。