我认为没有重新定义 form_for 的方法可以准确地获得您正在寻找的东西。或者编写自己的版本。
您可以使用 FormBuilders 或 Partials 或 Helpers,但这些概念都不能单独让您做您想做的事情。
FormBuilder 将允许您定义要在表单上调用的方法,例如确认和编辑,但它们将是同一表单的一部分。除非您创建两个表单。
在相关的帮助文件中:
class ExampleFormBuilder < ActionView::Helpers::FormBuilder
def confirm
hidden_field(:submission_state, :value => "confirmed") + "\n" + submit "Post"
end
def edit
hidden_field(:submission_state, :value => "edit_requested") + "\n" + submit "Edit"
end
end
示例用法:
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.confirm
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.edit
与部分一起使用时,您可以执行以下操作
部分的:
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.send(action)
看法:
= render :partial => :confirmation_for, :locals => {:action => :confirm}
= render :partial => :confirmation_for, :locals => {:action => :edit}
然后,您可以将两个部分调用捆绑到另一个部分中。但这有点太过分了。