使用ActiveAttr
:
class Filter
include ActiveAttr::Model
attribute term
# Overriding to_key, to_param, model_name, param_key etc doesn't help :(
end
class SpecialFilter < Filter
end
如何覆盖 ActiveModel为所有子类生成(相同的)预定义输入名称?
= form_for SpecialFilter.new, url: 'xx' do |f|
= f.text_field :term
所以<input name='special_filter[term]' />
我需要得到<input name='filter[term]' />
注意:场景要复杂得多(使用 simple_form 和 radios/checkboxes/dropdowns 等),所以请不要建议更改类的名称或类似的解决方法。我确实需要表单构建器使用一致的名称。