Rails 使用 Active Model 封装方便生成表单

doitian · 2012年12月16日 · 2812 次阅读

在 Rails 中需要编辑 ActiveRecord 对象时,可以很方便的使用 form_for (或者 simple_form_for) 来生成表单。但是有时候需要编辑的对象不是 ActiveRecord,比如导入导出数据,搜索的时候需要表单;再比如有时候系统设置为了不经常去改 schema 会使用 rails-settings-cached 这样的 gem 来存储。这种时候就可以用 ActiveModel 的 modules 来生成一个 class,它满足 form builder 对 ActiveRecord 的所有需求,所以可以直接用在 form builder 里。

详见 gist: https://gist.github.com/4307089

其中 type_caster 可以限制类型,并能进行类型转换。

Ryan 在 Railscasts #396 也做了类似的封装。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号