如何扩展rails form_for

时间:2011-10-18 12:36:23

标签: ruby-on-rails

我想扩展原生form_for方法,使其编译隐藏的额外输入。 我已经在表单构建器中添加了额外的自定义字段,但我找不到一种干净的方法来真正扩展form_for为其添加额外的行为。

我想干净地知道的是:

form_for ......:my_custom_attribute =>真

如果my_custom_attribute为true,则form_for必须生成一个额外的隐藏字段。

实现此行为的最佳方式是什么?

我在轨道3.1上。

1 个答案:

答案 0 :(得分:3)

我写了一篇关于类似主题的博文,可能会帮助你:http://davidsulc.com/blog/2011/05/01/self-marking-required-fields-in-rails-3/

您可能想要尝试的是

  1. 在(例如)config/initializers/form_builder.rb
  2. 中创建文件
  3. alias :orig_form_for :form_for
  4. 定义您的form_for方法以调用原始文件,并在必要时添加额外字段(例如,基于对象类或选项)
  5. 您可以找到有关FormBuilders工作方式的有用指南:http://code.alexreisner.com/articles/form-builders-in-rails.html

    自定义FormBuilder的一个示例:http://code.alexreisner.com/code/informant.html