Cucumber Selenium web step to verify value of input field

I have an input field with an id which has a value. The web_steps.rb method does not find the value. Is this the right step to use to check an input field? It works fine for a text_area but not an input.

Scenario steps (tried both ways): Then the “travel_card_number_gate” field should contain “5” Then the “#travel_card_number_gate” field should contain “5”

From web_steps.rb Then /^the “([^"])" field(?: within "([^"])”)? should contain “([^"]*)”$/ do |field, selector, value| with_scope(selector) do field = find_field(field) field_value = (field.tag_name == ‘textarea’) ? field.text : field.value if field_value.respond_to? :should field_value.should =~ /#{value}/ else assert_match(/#{value}/, field_value) end end end

PS, this is the error message:

Then the "travel_card_number_gate" field should contain "5"                                          # features/step_definitions/web_steps.rb:150
  expected: /5/,
       got: "" (using =~)
  Diff:
  @@ -1,2 +1 @@
  -/5/
   (RSpec::Expectations::ExpectationNotMetError)
  ./features/step_definitions/web_steps.rb:155:in `block (2 levels) in <top (required)>'
  ./features/step_definitions/web_steps.rb:14:in `with_scope'
  ./features/step_definitions/web_steps.rb:151:in `/^the "([^\"]*)" field(?: within "([^\"]*)")? should contain "([^\"]*)"$/'
  features/travel_card.feature:453:in `Then the "travel_card_number_gate" field should contain "5"'