大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 将用户输入转换为整数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
before_validation do unless self.price.blank? then self.price= self.price.to_s.gsub(/\D/,'').to_i end end
如果用户输入$50这个代码给我0.如果用户输入50 $这个代码给了我50.我认为,因为数据类型是整数,rails在我的before_validation之前运行.to_i并且在$之后剪切所有的东西.如果数据类型是字符串,则同样的代码工作正常.
任何人都有一个解决方案,让我保留整数数据类型?
def price=(val) write_attribute :price,val.to_s.gsub(/\D/,'').to_i end
所以当你做@ model.price =无论如何,它将转到这个方法而不是rails的default属性作者.那么你可以转换数字并使用write_attribute进行实际的写作(你必须这样做,因为标准的价格=现在是这个方法!).
我最喜欢这种方法,但是参考另一种方法是在将它分配给模型之前在控制器中.该参数以字符串形式出现,但该模型正将该字符串转换为一个数字,因此可以直接使用该参数.这样的东西(只是适应你的控制器代码):
def create @model = Model.new(params[:model]) @model.price = params[:model][:price].gsub(/\D/,'').to_i @model.save end
对于任一解决方案,请删除该before_validation.
以上是大佬教程为你收集整理的ruby-on-rails – 将用户输入转换为整数全部内容,希望文章能够帮你解决ruby-on-rails – 将用户输入转换为整数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。