【问题标题】:Rails split form field into two, i.e metres and milimetresRails 将表单域分成两部分,i.n 米和毫米
【发布时间】:2013-12-08 17:16:23
【问题描述】:

我在 rails 中有一个 number_field,有没有一种简单的方法可以将输入框分成两部分,即输入一个米,另一个输入毫米?

【问题讨论】:

  • 你的属性是什么类型——字符串还是浮点数?
  • 属性为十进制
  • 所以您以毫米为单位保存值,但希望它可以以米和毫米为单位进行编辑?

标签: ruby-on-rails forms ruby-on-rails-4


【解决方案1】:

您可以在模型上使用两个虚拟属性。我假设您的模型称为Model,现有属性称为unit

class Model < ActiveRecord::Base
  attr_accessor :unit_metres, :unit_millimetres

  def unit_metres=(value)
    @unit_metres = value
    self.unit = @unit_metres * 1000 + unit_millimetres
  end

  def unit_millimetres=(value)
    @unit_millimetres = value
    self.unit = unit_metres + @unit_millimetres
  end
end

现在,不要在表单中使用&lt;%= number_field :unit %&gt;,而是使用&lt;%= number_field :unit_metres %&gt;&lt;%= number_field :unit_millimetres %&gt;

【讨论】:

  • 我决定不这样做,所以我没有测试你的代码,但你不会在这里有一个无限循环,每个方法互相调用吗?
  • 不,setter 调用的是相反的 getter,而不是彼此。
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多