当前位置:  开发笔记 > 编程语言 > 正文

如何格式化Rails编辑字段中显示的值?

如何解决《如何格式化Rails编辑字段中显示的值?》经验,为你挑选了2个好方法。

我想让编辑表单字段尽可能方便用户使用.例如,对于数值,我希望用逗号(例如number_with_precision)显示该字段.

这在显示器方面很容易,但是编辑呢?有没有办法做到这一点?

我正在使用Rails FormBuilder.经过调查,我发现它使用InstanceTag,它通过使用获取字段的值,_value_before_type_cast这意味着不会调用覆盖.



1> Luke Francl..:

到目前为止我提出的最好的是这样的:

<%= f.text_field :my_attribute, :value => number_with_precision(f.object.my_attribute) %>

或者my_attribute可以返回格式化的值,如下所示:

def my_attribute
  ApplicationController.helpers.number_with_precision(read_attribute(:my_attribute))
end

但你还是要用 :value

<%= f.text_field :my_attribute, :value => f.object.my_attribute %>

这似乎很多工作.



2> jdl..:

我更喜欢你的第一个答案,格式化在视图中完成.但是,如果要在模型中执行格式化,可以对getter和setter使用包装器方法,并避免完全使用:value选项.

你最终会得到这样的东西.

def my_attribute_string
  foo_formatter(myattribute)
end

def my_attribute_string=(s)
  # Parse "s" or do whatever you need to with it, then set your real attribute.
end

<%= f.text_field :my_attribute_string %>

Railscasts在第32集的text_field中用Time对象覆盖了它.其中非常聪明的部分是它们如何处理验证错误.仅凭这一点值得观看这一集.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有