Search code examples
ruby-on-railsformsnavbarbootstrap-5

Bootstrap 5 Aligning Items In Navbar


<nav class="navbar navbar-expand-lg navbar-dark bg-dark">

  <%= link_to "My Ozone", root_path, class: "navbar-brand" %>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
    <%= form_tag zipcode_path, :method => 'POST' do %>
    <div class="form-inline my-2 my-lg-0">
      <%= text_field_tag 'zipcode', nil, placeholder: "Search Zipcode", class: "form-control mr-sm-2" %>
      <%= submit_tag 'Search', class: 'btn btn-outline-secondary my-2 my-sm-0' %>
    </div>
    <% end %>
  </div>
</nav>

I've finished a Ruby on Rails project that displays ozone information based on the zip code searched for. However, I can't seem to get the field and submit button next to each other. I've tried a variety of different things like changing the div class and wrapping things in a form tag, but it doesn't seem to resolve the issue. Looking for help with getting the items aligned on the same row.


Solution

  • You need to use d-flex instead of form-inline class in Bootstrap 5.

    Dropped form-specific layout classes for our grid system in Bootstrap 5. Use our grid and utilities instead of .form-group, .form-row, or .form-inline - more details here

    Your code should be as below:

    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    
      <%= link_to "My Ozone", root_path, class: "navbar-brand" %>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
    
      <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
        <%= form_tag zipcode_path, :method => 'POST' do %>
        <div class="d-flex my-2 my-lg-0">
          <%= text_field_tag 'zipcode', nil, placeholder: "Search Zipcode", class: "form-control mr-sm-2" %>
          <%= submit_tag 'Search', class: 'btn btn-outline-secondary my-2 my-sm-0' %>
        </div>
        <% end %>
      </div>
    </nav>