Summary
实例方法merge_wrapper_options
定义在SimpleForm::Inputs::Base
类,但直到版本 3.1.0.rc1 为止。
这里是3.0.2版本的相关源码(没有merge_wrapper_options
):
https://github.com/plataformatec/simple_form/blob/v3.0.2/lib/simple_form/inputs/base.rb https://github.com/plataformatec/simple_form/blob/v3.0.2/lib/simple_form/inputs/base.rb
将此与版本 3.1.0.rc1 进行对比:
https://github.com/plataformatec/simple_form/blob/v3.1.0.rc1/lib/simple_form/inputs/base.rb https://github.com/plataformatec/simple_form/blob/v3.1.0.rc1/lib/simple_form/inputs/base.rb
因此,如果您使用的是 v3.0.2 或更早版本,则不会拥有它。但是,没什么大不了的,只需自己定义方法即可:
Code
/app/inputs/fake_string_input.rb
class FakeStringInput < SimpleForm::Inputs::StringInput
# Creates a basic input without reading any value from object
def input(wrapper_options = nil)
merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
template.text_field_tag(attribute_name, nil, merged_input_options)
end # method
def merge_wrapper_options(options, wrapper_options)
if wrapper_options
options.merge(wrapper_options) do |_, oldval, newval|
if Array === oldval
oldval + Array(newval)
end
end
else
options
end
end # method
end # class
/app/views/some_form.html.haml
= f.input :some_parameter,
label: false,
as: :fake_string,
input_html: { value: 'some-value' }
POST 请求将包含:
Parameters: {"utf8"=>"✓", "some_parameter"=>"some-value" }