Ultimately what it's doing is calling our FormBuilder version of `input`:
```ruby
def input(method, *args)
  content = with_new_form_buffer{ super }
  @inputs_with_block ? form_buffers.last << content : content
end
```

So the code in question should be simplified to be this instead:
```ruby
def filter(method, options = {})
  if method.present? && options[:as] ||= default_input_type(method)
    input(method, options)
  end
end
```

Note that I removed the string substitution because I don't think it's a good direction to take. If someone does either of these:
```ruby
filter :id
filter :foo_id
```
It should follow that the filter lets you physically select an ID with ==, !=, >, <, >= or <=