dch*_*cke 10 validation ruby-on-rails delimiter
如何将用户数输入从11,5转换为11.5?
我尝试了以下作为回调:
before_validation :comma_to_delimiter
def comma_to_delimiter
self.price.to_s.gsub(',', '.').to_f
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我希望用户能够输入他想要的任何分隔符 - 当前,当用户使用逗号而不是点时,应用程序会抛出错误.
Mat*_*att 15
你所做的可能不是最好的方式,所以也许有人可以用更好的方法回答.但是要让你的生产线工作,你需要让它真正坚持改变.
self.price.to_s.gsub(',', '.').to_f
Run Code Online (Sandbox Code Playgroud)
只会返回更改,但这不会回调!
self.price = self.price.to_s.gsub(',', '.').to_f
# OR
self.price.to_s.gsub!(',', '.').to_f
Run Code Online (Sandbox Code Playgroud)
将在对象内持续进行更改.
Sha*_*goz 13
在某些国家/地区,逗号是标准货币分隔符,如果用户在表单中键入"19,99",则除非您手动处理分隔符转换,否则它将保存为"19.00".我认为解决这个问题的正确方法是编写自定义属性设置器.
class Product < ActiveRecord::Base
def price=(val)
val.sub!(',', '.') if val.is_a?(String)
self['price'] = val
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8329 次 |
| 最近记录: |