Home > Net >  How to use bootstrap-icons with Rails 7 and importmaps
How to use bootstrap-icons with Rails 7 and importmaps

Time:01-21

New territory here: Rails 7.0.1, Ruby 3.1.0

rails new rails7app

bin/importmap pin bootstrap adds bootstrap to the app.

Bootstrap is a combination of js and css. bootstrap-icons seems to be basically css. With yarn/npm approach, yarn install bootstrap-icons works, but with Rails 7 and no npm bin/importmap pin bootstrap-icons does not work. Somewhat expected since this is css.

How do I add bootstrap-icons to a basic Rails 7 app?

CodePudding user response:

Importmaps handles javascript only.

You will need to add bootstrap to your gem file

gem 'bootstrap', '~> 5.1', '>= 5.1.3'

It is recommended to uncomment the sassc-rails line in the gem file as well

gem 'sassc-rails'

Then you should be able to add a bootstrap import in your app/assets/stylesheets/application.scss

@import "bootstrap";

EDIT:

Apologies, in order to add the bootstrap-icon portion, your app/assets/stylesheets/application.scss needs to import the bootstrap-icon css as well. You can either reference the CDN at import or put the css in your /vendor folder and reference the relative path at import.

This is the app/assets/stylesheets/application.scss using the CDN method

@import "bootstrap";
@import url("https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css");

Then you can add icons to your view pages.

This code is on my home.html.erb and renders a blue alarmclock.

<i  style="font-size: 2rem; color: cornflowerblue;"></i>

CodePudding user response:

See Joe Thor's first comment and this adds a workaround for something wrong in my set up. What is working for me is adding:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">

to application.html.erb and using the syntax suggested: <i ></i>.

The syntax <%= icon("bootstrap", class: "text-success") %> looks in node-modules/… which aren't installed, so get an error. This is the syntax I had been using. More Railsy.

@import url("https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"); in application.scss is not working for some reason, although it seems it should.

Boostrap seems to be not helping by mixing svg icons and fonts to get "icons".

  •  Tags:  
  • Related