我正在尝试干掉一堆表单代码,这些代码在每个表单的末尾都出现了一组重复的字段。我写了一个包裹 form_for rails 助手的助手。但是我开始迷失在飞来飞去的所有不同范围内......
我的助手是这样的:
def simple_form_helper(record_or_name_or_array, *args, &proc)
options = ... # overriding some options, not relevant
form_for(record_or_name_or_array, *(args << options.merge(:option => "blah")) , &proc)
# i wish to access &proc and append the call to render
# to within &procs scope (to access block local variable)
concat render('shared/forms/submit') # this obv does not work
end
在 shared/forms/_submit.erb 我有一堆字段和提交按钮,这些都是一堆模型共有的。所以我希望从 form_for 的范围内呈现它,以便可以访问 f。
f.text_field :foo
f.hidden_field :bar
f.submit "Save"
这个想法是在视图中像这样使用它:
simple_form_helper :object do |f|
f.text_field :name
f.text_field :description
f.text_field :other_field
# want common fields and submit button appended here
# I could just call render("shared/forms/submit") here
# but that does not seem very DRY. Or am I too unreasonable?
end
所以它的功能就像旧的 form_for: 为一些带有特定字段的 :object 创建一个表单。然后将部分附加到一堆模型中常见的字段。
有没有办法做到这一点?也许,有更好的方法?
谢谢!