\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{baxter2} \pdfinfo{ /Title (rails-fhs-navigation-commands.pdf) /Creator (Cheatography) /Author (baxter2) /Subject (Rails FHS Navigation Commands Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{E9573F} \definecolor{LightBackground}{HTML}{FDF4F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Rails FHS Navigation Commands Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{baxter2} via \textcolor{DarkBackground}{\uline{cheatography.com/160157/cs/33707/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}baxter2 \\ \uline{cheatography.com/baxter2} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 16th November, 2022.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{4.16 cm} x{3.84 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{File Type Navigation Commands}} \tn % Row 0 \SetRowColor{LightBackground} :Econtroller & :Scontroller \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} :Scontroller events & :Scontroller \seqsplit{events/registrations} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} :Scontroller eve↹ & :Scontroller regi↹ \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} :Scontroller events\#index & :Scontroller events\#show \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} :Scontroller events:15 & :Scontroller events/upcoming! \tn % Row Count 9 (+ 2) % Row 5 \SetRowColor{white} :Scontroller events! & :Scontroller \seqsplit{events/registrations}! \tn % Row Count 11 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 11 (+ 0) % Row 7 \SetRowColor{white} :Senvironment & :Senvironment development \tn % Row Count 13 (+ 2) % Row 8 \SetRowColor{LightBackground} :Senvironment pro↹ & :Senvironment test \tn % Row Count 14 (+ 1) % Row 9 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 14 (+ 0) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sfixtures} \tn % Row Count 15 (+ 1) % Row 11 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 15 (+ 0) % Row 12 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sfunctionaltest} \tn % Row Count 16 (+ 1) % Row 13 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 16 (+ 0) % Row 14 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Shelper} \tn % Row Count 17 (+ 1) % Row 15 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 17 (+ 0) % Row 16 \SetRowColor{LightBackground} :Sinitializer & :Sinitializer inflections \tn % Row Count 19 (+ 2) % Row 17 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 19 (+ 0) % Row 18 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sinitializer lograge!} \tn % Row Count 20 (+ 1) % Row 19 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 20 (+ 0) % Row 20 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sintegrationtest} \tn % Row Count 21 (+ 1) % Row 21 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 21 (+ 0) % Row 22 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sjavascript} \tn % Row Count 22 (+ 1) % Row 23 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 22 (+ 0) % Row 24 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Slayout} \tn % Row Count 23 (+ 1) % Row 25 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 23 (+ 0) % Row 26 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Slib} \tn % Row Count 24 (+ 1) % Row 27 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 24 (+ 0) % Row 28 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Sspec} \tn % Row Count 25 (+ 1) % Row 29 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 25 (+ 0) % Row 30 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Slocale} \tn % Row Count 26 (+ 1) % Row 31 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 26 (+ 0) % Row 32 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{:Smailer} \tn % Row Count 27 (+ 1) % Row 33 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 27 (+ 0) % Row 34 \SetRowColor{LightBackground} :Smigration & Smigration regi↹ \tn % Row Count 28 (+ 1) % Row 35 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 28 (+ 0) % Row 36 \SetRowColor{LightBackground} :Smodel & :Smodel \textless{}C-a\textgreater{} \textless{}C-a\textgreater{} \tn % Row Count 29 (+ 1) % Row 37 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Smodel event!} \tn % Row Count 30 (+ 1) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{4.16 cm} x{3.84 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{File Type Navigation Commands (cont)}} \tn % Row 38 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 0 (+ 0) % Row 39 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Smigration} \tn % Row Count 1 (+ 1) % Row 40 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 1 (+ 0) % Row 41 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Smodel} \tn % Row Count 2 (+ 1) % Row 42 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 2 (+ 0) % Row 43 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Sschema} \tn % Row Count 3 (+ 1) % Row 44 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 3 (+ 0) % Row 45 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Sstylesheet} \tn % Row Count 4 (+ 1) % Row 46 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 4 (+ 0) % Row 47 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Stask} \tn % Row Count 5 (+ 1) % Row 48 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 5 (+ 0) % Row 49 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{:Sunittest} \tn % Row Count 6 (+ 1) % Row 50 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 6 (+ 0) % Row 51 \SetRowColor{white} :Sview index.html.erb & :Sview index.htm.erb! \tn % Row Count 8 (+ 2) % Row 52 \SetRowColor{LightBackground} :Sview \seqsplit{events/upcoming/index}.html.erb & :Sview \seqsplit{layouts/\_footer.html.erb}! \tn % Row Count 10 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{Each of the following commands has variants for splitting, vertical splitting, opening in a new tab, and reading the file into the current buffer. For :Emodel, those variants would be :Smodel, :Vmodel, :Tmodel, and :Dmodel.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{`gf` or `C-w f` (`*` indicates cursor position)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Pos*t.first \{\{nl\}\} app/models/post.rb} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{has\_many :c*omments \{\{nl\}\} app/models/comment.rb} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{link\_to 'Home', :controller =\textgreater{} 'bl*og' \{\{nl\}\} \seqsplit{app/controllers/blog\_controller}.rb} \tn % Row Count 4 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\textless{}\%= render 'sh*ared/sidebar' \%\textgreater{} \{\{nl\}\} \seqsplit{app/views/shared/\_sidebar}.html.erb} \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\textless{}\%= stylesheet\_link\_tag 'appl*ication' \%\textgreater{} \{\{nl\}\} \seqsplit{app/assets/stylesheets/application}.css} \tn % Row Count 8 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{class BlogController \textless{} Applica*tionController \{\{nl\}\} \seqsplit{app/controllers/application\_controller}.rb} \tn % Row Count 10 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{class ApplicationController \textless{} ActionCont*roller::Base \{\{nl\}\} \seqsplit{.../action\_controller/base.rb}} \tn % Row Count 12 (+ 2) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{fixtures :pos*ts \{\{nl\}\} test/fixtures/posts.yml} \tn % Row Count 13 (+ 1) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{layout :pri*nt \{\{nl\}\} \seqsplit{app/views/layouts/print.html.erb}} \tn % Row Count 15 (+ 2) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\textless{}\%= link\_to "New", new\_comme*nt\_path \%\textgreater{} \{\{nl\}\} \seqsplit{app/controllers/comments\_controller}.rb (jumps to def new)} \tn % Row Count 18 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{In the last example, the controller and action for the named route are determined by evaluating routes.rb as Ruby and doing some introspection. This means code from the application is executed. Keep this in mind when navigating unfamiliar applications.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.52 cm} x{4.48 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Snippet Rails}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{routes.rb\{\{bb\}\}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{r} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{} \tn % Row Count 2 (+ 0) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{XXXXX\_controller.rb \{\{bb\}\}} \tn % Row Count 3 (+ 1) % Row 4 \SetRowColor{LightBackground} ci || cindex & def index \tn % Row Count 4 (+ 1) % Row 5 \SetRowColor{white} cni || cnindex & def index (nested) \tn % Row Count 5 (+ 1) % Row 6 \SetRowColor{LightBackground} cs || cshow & def show \tn % Row Count 6 (+ 1) % Row 7 \SetRowColor{white} cns || cnshow & def show (nested) \tn % Row Count 7 (+ 1) % Row 8 \SetRowColor{LightBackground} cn || cnew & def new \tn % Row Count 8 (+ 1) % Row 9 \SetRowColor{white} cnn || cnnew & def new (nested) \tn % Row Count 9 (+ 1) % Row 10 \SetRowColor{LightBackground} cc || ccreated & def create \tn % Row Count 10 (+ 1) % Row 11 \SetRowColor{white} cnc || cncreate & def create (nested) \tn % Row Count 11 (+ 1) % Row 12 \SetRowColor{LightBackground} ce || cedit & def edit \tn % Row Count 12 (+ 1) % Row 13 \SetRowColor{white} cne || cnedit & def edit (nested) \tn % Row Count 13 (+ 1) % Row 14 \SetRowColor{LightBackground} cu || cupdate & def update \tn % Row Count 14 (+ 1) % Row 15 \SetRowColor{white} cnu || cnupdate & def update (nested) \tn % Row Count 15 (+ 1) % Row 16 \SetRowColor{LightBackground} cd || cdestroy & def destroy \tn % Row Count 16 (+ 1) % Row 17 \SetRowColor{white} cnd || cndestroy & def destroy (nested) \tn % Row Count 17 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}