ruby-on-rails - 从 rails 中的整数或小数中去除逗号

标签 ruby-on-rails ruby ruby-on-rails-3

整数或小数是否有等效的 gsub? gsub 应该使用整数吗?基本上,我只是想将小数输入到 ruby​​ 表单中,以及用户能够使用逗号的内容。例如,我希望用户能够输入 1,000.99。

我试过用

before_save :strip_commas

def strip_commas
    self.number = self.number.gsub(",", "")    
end

但出现以下错误“undefined method `gsub' for 8:Fixnum”,其中“8”被替换为用户输入的任何数字。

最佳答案

如果您的字段是 Fixnum,它永远不会有逗号,因为 Rails 必须将用户输入转换为数字才能将其存储在那里。

但是,它将通过在输入字符串上调用 to_i 来实现,这不是您想要的。 将普通的 setter 覆盖为类似的东西

def price=(num)
  num.gsub!(',','') if num.is_a?(String)
  self[:price] = num.to_i
end

未经测试,但类似的东西应该可以工作......

当输入仍然是字符串时,您需要获取逗号。

编辑: 如评论中所述,如果您想接受小数,并创建非整数的东西,则需要与 String.to_i 不同的转换。此外,不同的国家/地区对数字标点符号有不同的约定,因此这不是一个完整的解决方案。

关于ruby-on-rails - 从 rails 中的整数或小数中去除逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6541864/

相关文章:

ruby-on-rails - 单个数据库条目 rails 3 的多个文本字段

ruby-on-rails - 如何在 Rails 4 中禁用输入作为选择

ruby-on-rails - 访问模型中的current_user

ruby - 搜索方法中 “_id”字段对elasticsearch的影响?

ruby - ruby 中的尾递归——这两种实现有什么区别?

ruby - 如何在使用 ERB 作为主要模板引擎时在 Sinatra 中渲染 Mustache 部分

ruby-on-rails-3 - 导轨 3 : How to prevent the browser from loading a page from cache on back/forward navigation?

javascript - Github 贡献图

ruby-on-rails - Rails 4 调整大小和裁剪类似于 Facebook 的图像

php - 创建一个新的社交网站。推荐的启动框架?