ekremkaraca
ekremkaraca

Reputation: 1449

detection of bootstrap navbar links fails with slim

In my rails app, styled with bootstrap3, I decided to switch Slim instead of existing ERB. While I was converting erb view files to slim, I've noticed that styles of navbar links were disappeared.

# app/views/layouts/_navbar.html.slim
nav.navbar.navbar-default
  .container
    .navbar-header.navbar-left
      button(type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-navbar-collapse")
        span.sr-only Toggle navigation
        span.icon-bar
        span.icon-bar
        span.icon-bar
      a.navbar-brand href="/" Foody

    .collapse.navbar-collapse.navbar-right#bs-navbar-collapse
      ul.nav.navbar-nav
      - if user_signed_in?
          li = link_to current_user.email, edit_user_registration_path
          li = link_to 'New Recipe', new_recipe_path
          li = link_to 'Sign Out', destroy_user_session_path, method: :delete, confirm: "Are you sure?"
      - else
          li = link_to 'Sign In', new_user_session_path
          li = link_to 'Sign Up', new_user_registration_path

      span.clearfix

Here is the original file I've converted from:

# app/views/layouts/_navbar.html.erb
<nav class="navbar navbar-default" role="navigation">
  <div class="container">
    <div class="navbar-header navbar-left">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="/">Foody</a>
    </div>
    <div class="collapse navbar-collapse navbar-right" id="bs-navbar-collapse">
      <ul class="nav navbar-nav">
        <% if user_signed_in? %>
            <li><%= link_to current_user.email, edit_user_registration_path %></li>
      <li><%= link_to 'New Recipe', new_recipe_path %></li>
            <li><%= link_to 'Sign Out', destroy_user_session_path, method: :delete, confirm: "Are you sure?" %></li>
        <% else %>
            <li><%= link_to 'Sign In', new_user_session_path %></li>
            <li><%= link_to 'Sign Up', new_user_registration_path %></li>
        <% end %>
      </ul>
    </div>
    <span class="clearfix"></span>
  </div>
</nav>

Here's the result both normal & responsive modes

enter image description here

Here's output (sorry for complexitie)

<div class="collapse navbar-collapse navbar-right" id="bs-navbar-collapse">
<ul class="nav navbar-nav"></ul><li><a href="/users/sign_in">Sign In</a></li>
<li><a href="/users/sign_up">Sign Up</a></li><span class="clearfix"></span>

Where did I do wrong?

Upvotes: 1

Views: 1069

Answers (1)

ekremkaraca
ekremkaraca

Reputation: 1449

Indentation failure bagan after ul.nav.navbar-nav caused the problem. Need more practice for Slim. Special thanks for Graeme!

nav.navbar.navbar-default
  div.container
    div.navbar-header.navbar-left
      button(type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-navbar-collapse")
        span.sr-only Toggle navigation
        span.icon-bar
        span.icon-bar
        span.icon-bar
      a.navbar-brand href="/" Foody
    div.collapse.navbar-collapse.navbar-right#bs-navbar-collapse
      ul.nav.navbar-nav
        - if user_signed_in?
          li = link_to current_user.email, edit_user_registration_path
          li = link_to 'New Recipe', new_recipe_path
          li = link_to 'Sign Out', destroy_user_session_path, method: :delete, confirm: "Are you sure?"
        - else
          li = link_to 'Sign In', new_user_session_path
          li = link_to 'Sign Up', new_user_registration_path
    span.clearfix

Upvotes: 1

Related Questions