中文Scaffold

阅读更多
Rails1.2以后有一个scaffold_resource的generator,那些column在view里都展开了。相比老的scaffold要管用很多(老的scaffold基本上是个花瓶功能),开发可以在这个生成结果的基础上开展。

我在用rails做一个中文项目。每次生成scaffold_resource生成代码以后,都要去手工把Edit,View等等链接改成中文,还有那些column的名字,不胜其烦,根本没有享受到新版scaffold的便捷。有过同样经历的朋友会理解这种烦恼,最大的烦恼是做这些重复动作很傻,很不DRY。在多方搜索未果之下,决定自己改装出一个中文scaffold。

改装基于两个基础: l10n_simplified为主, mod_i18n为辅。

功能
改装好的plugin除了中文scaffold之外,还享受到了这两个基础plugin的几大好处:
1、Validation报错中文化
h2.保存该客户时发生2 个错误。
p.错误字段如下:
* 客户名称 不能重复。
* 地址 不能为空。

2、中文日期时间显示
>> Time.now.to_s(:long) # => 2007年6月6日(星期四)22时30分12秒
>> Time.now.to_s(:short) # => 6月6日 22:30
3、中文时间间隔
>> helper.distance_of_time_in_words 50.seconds.ago # => 不到1分钟
4、人民币显示
>> helper.number_to_currency 1039.12 # => ¥1,039.12
5、数组转换成中文句子
>> ["张三", "李四", "王二"].to_sentence # => "张三、李四和王二"
6、可以自定义翻译项

安装
附件zip解压缩到你的$RAILS_ROOT/vender/plugins下就可以了。
注意,rails版本一定是1.2以上。

Scaffold命令示例(其实就是rails1.2的scaffold_resource命令)
script/generate scaffold_resource customer name:string address:string

用法
要在model文件里加一些const,比如刚才创建的:app/models/customer.rb
class Customer < ActiveRecord::Base
  validates_presence_of :name, :address
  validates_uniqueness_of :name

  # human names
  ModelName = "客户"
  ColumnNames = {
    :name       => "客户名称",
    :address    => "地址"
  }
end


License
继承所参考的项目:MIT License

TODO(如果有空的话)
1、递交给l10n-simplified.rubyforge.org
2、如果作者不接受,新建一个google code的project,这样就可以通过script/plugin install安装了。
3、完善它
4、做一个video,或者贴图,让人一看就懂
  • l10n-simplified-with-scaffold.zip (137.5 KB)
  • 描述: l10n-simplified-with-scaffold plugin files
  • 下载次数: 75

你可能感兴趣的:(Rails,Google,Ruby,ActiveRecord)