Install the bootstrap gem:
gem "bootstrap-sass", "~> 3.3" gem "font-awesome-rails", "~> 4.3"
Rename app/assets/stylesheets/application.css to application.css.scss, so you an add @import statements to it
Replace the entire content of the file with:
@import "bootstrap-sprockets"; @import "bootstrap"; @import "font-awesome";
Once you do this, you will need to also import the particular stylesheets your app is compose of, example (importing projects.scss:
@import "projects";
At this point you have the bootstrap css already applied to your pages. It is recommended you apply at least this div wrapper to your app/views/layouts/application.html.erb file:
<body> <div class="container"> <% flash.each do |key, message| %> <div><%= message %></div> <% end %> <%= yield %> </div> </body>
An example of a styled link with bootstrap:
<%= link_to “New Project”, new_project_path, class: “new” %>
And the CSS (inside application.css.scss):
a.new { @extend .btn; @extend .btn-success; &:before { font-family: "FontAwesome"; @extend .fa-plus; padding-right: 0.5em; } }
This is an example on how to create a decent looking action buttons:
<ul class="actions"> <li><%= link_to "Edit Project", edit_project_path(@project), class: "edit" %></li> <li><%= link_to "Delete Project", project_path(@project), method: :delete, data: { confirm: "Are you sure you want to delete this project?" }, class: "delete" %></li> </ul>
And the associated css:
a.edit { @extend .btn; @extend .btn-primary; &:before { font-family: "FontAwesome"; @extend .fa-pencil; padding-right: 0.5em; } } a.delete { @extend .btn; @extend .btn-danger; &:before { font-family: "FontAwesome"; @extend .fa-trash; padding-right: 0.5em; } }
This is an example of how to style your alert messages (in application.html.erb):
<% flash.each do |key, message| %> <div class="alert alert-<%= key %>"> <%= message %> </div> <% end %>
And the CSS associated with it:
.alert-notice { @extend .alert-success; } .alert-alert { @extend .alert-danger; }
Example of how to add a top nav bar:
<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <%= link_to "Ticketee", root_path, class: "navbar-brand" %> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="collapse navbar-collapse" id="collapse"> <ul class="nav navbar-nav"> <li class="<%= "active" if current_page?("/") %>"> <%= link_to "Home", root_path %> </li> </ul> </div> </div> </nav>
And the CSS associated with it:
body { padding-top: 70px; }
If you end up using the nav bar code above, you are going to need a bit of javascript to make the menu work on mobile platforms (otherwise the menu won’t open). Make sure to include this line in your app/assets/javascripts/application.js file:
//= require bootstrap-sprockets
Making your app responsive
Include the following inside your application.html.erb <head> tags:
<meta name="viewport" content="width=device-width, initial-scale=1">
Also, create a dedicated stylesheet file to include your responsive styles (assets/stylesheets/responsive.scss), and import it:
@import "responsive";
Inside there, you can place all your scss related to media queries:
@media(max-width: 500px) { p { color: red } }