验证数字输入,并希望获得相同的输出作为输入,而不是在ruby on rails

eiee3dmh  于 2023-05-28  发布在  Ruby
关注(0)|答案(1)|浏览(130)

当我输入0.0001。输出为0.0001。当我输入0.00001或更多0在1之前。然后我得到1.0e-5或值大于5。
这是我在管理面板上的索引。

index do
    selectable_column
    column :id
    column :transaction_type
    column "Single Coin Worth($)", :single_coin_worth
    
    # actions defaults: true #for all actions like(edit, show and delete)
    actions defaults: false do |coin_setting|
      item "Show", admin_setting_path(coin_setting), class: "member_link"
      item "Edit", edit_admin_setting_path(coin_setting), class: "member_link"
    end
  end

我还想限制输入字段中e表示法。
这是我的fourm管理面板

form do |f| 
    f.semantic_errors *f.object.errors[:base]
    f.inputs do
      f.input :single_coin_worth, {required: true, min: 0, max: 100000}
      f.input :transaction_type, as: :select, collection: ['purchase', 'withdrawl']
      f.actions
    end
  end

我在模型中有这些验证

validates :single_coin_worth, presence: true

validates :single_coin_worth, numericality: {:less_than_or_equal_to => 1}

validates :single_coin_worth, numericality: {:greater_than => 0}

validates :transaction_type, presence: true, inclusion: {in: ['purchase', 'withdrawl']}

我希望输出数字与输入相同。我也想限制所有的东西在输入字段ecept小数点和数字。

knpiaxh1

knpiaxh11#

这是rails中Number的默认行为(由它的to_s定义)。
如果在你看来,你想用上面描述的方式来展示它,这里有两件事(我能想到的)你可以做。
1.使用NumberHelpernumber_with_precision在您的视图中。
1.在模型中将属性标记为浮点型

class YourModel  
  attribute :single_coin_worth, :float

还有另一种方法,那就是猴子修补Number#to_s方法,但我建议你不要这样做,重点是不要。这将改变一个核心库的行为,这从来都不是一件好事,并且会在未来产生一些讨厌的bug。
祝你好运

相关问题