Nu ska vi lägga till några ”Tillbaka”-länkar till redigeringen, visningen och den nya sidan… Hoppa in på respektive sida och lägg till de nya länkarna så här:
<%= link_to 'Back', articles_path %>
Jag lade till mina längst ner i varje fil.
Och låt oss lägga till en redigeringslänk på show-sidan…
<%= link_to "Edit", edit_article_path(@article) %>
Steg 12: Refactor Forms into a Single Partial
Skapa en ny fil i views/articles direkt.
_form.html.erb
Kopiera/klistra in formulärdata i den här filen…
Rendera sedan formuläret i den nya och redigerade sidan…
<%= render 'form' %>
Du bör ha skrotat ut all gammal formulärinformation och lagt till kodutdraget om till den nya och redigerade sidan så att varje ser ut ungefär så här:
<h1>Edit Article</h1><%= render 'form' %><%= link_to 'Back', articles_path %>
Nu ska vi lägga till destruktionsåtgärden…
Steg 13: Lägg till destruktionsåtgärden
I kontrollern…
Vilken kontrollör? Det vet du redan.
Nu måste vi lägga till länkarna till de sidor från vilka vi vill kunna radera. Använd länken nedan…
<%= link_to 'Delete', article_path(article), method: :delete, data: {confirm: "Are you sure?"} %>
…lägg till på de sidor där du vill att användaren ska kunna radera.
Om jag lägger till på vår indexsida kommer det att se ut som…
Om vi lägger till på vår show-sida måste vi ändra destroy-länken en aning så att den efterliknar redigeringslänkens struktur. Förstår du vad jag menar?
Detta:
<%= link_to 'Delete', article_path(@article), method: :delete, data: {confirm: "Are you sure?"} %>
Istället för detta:
<%= link_to 'Delete', article_path(article), method: :delete, data: {confirm: "Are you sure?"} %>
Steg 14: Refactor Articles Controller
En av utvecklingsprinciperna är DRY.
Du kanske redan vet vad det innebär: ”DON’T REPEAT YOURSELF”
Vi upprepar oss själva ganska mycket, så låt oss göra lite refaktorisering.
Denna kodrad visas i alla våra åtgärder…
@article = Article.find(params)
Så, vi kommer att skapa en privat metod och lagra denna rad där…
def set_article @article = Article.find(params) end
Därefter raderar vi kodraden från åtgärderna…
Den ingår i destroy, show, update, edit…
Helt nedanför den första raden i controllern…
before_action :set_article, only:
Den uppdaterade controllerfilen kommer att se ut så här:
Steg 15: Installera Bootstrap
Lägg till gemfilen från github-sidan…
gem 'bootstrap-sass', '~> 3.4.1' gem 'sassc-rails', '>= 2.1.0'
Installera sedan på kommandoraden i app-katalogen och se till att du är i app-katalogen och inte i en av underkatalogerna…
$ bundle install
Du måste också skapa en ny CSS-fil… Filnamnet kan se ut så här nedan och du skapar den under app/assets/stylesheets
custom.css.scss
Och lägg till…
Därefter, i programmet.js-filen under app/assets/javascripts…
//= require jquery //= require bootstrap-sprockets
Och, om du använder Rails 5, installera jQuery-gemmen…
gem 'jquery-rails'
Inte säker på vilken version du använder? Kör följande i terminalen:
$ rails -v
Nu vet du. Om du behöver installera jquery lägger du till gemen ovan i gemfilen och gör en buntinstallation.
$ bundle install
Steg 16: Installera navigeringsfältet
Skapa partial under mappen layouts…
_navigation.html.erb
Nu går du till bootstraps hemsida…
Hämta standardkoden för navigeringsfältet… Det är det första exemplet och ser ungefär så här ut:
Och klistra in i din _navigation partial… Spara.
Rendera nu den partiella delen inuti <head> </head> i application.html.erb-filen…
<%= render 'layouts/navigation' %>
Hela filen ser nu ut ungefär så här:
Starta om servern (på en mac: control + c) eftersom du nyligen har lagt till några nya gems, och starta sedan upp den igen:
$ rails s
Och när du sedan uppdaterar din lokala server kommer du att se:
Niiiiiiiiice…. Ser bra ut, eller hur?
Nu kan vi börja styla! Eller snarare, låt oss få bort stylingen väldigt snabbt så att vi kan fokusera på att bygga appen snarare än att styla appen 🙂
I filen custom.css.scss kopiera/klistra in och spara sedan:
Steg 17: Lägg till länkar i navigeringsfältet
Nu tar vi oss an navigeringsfältet och ser till att länkarna i navigeringsfältet pekar till de ställen som vi vill att de ska peka på!
Detta…
<a class="navbar-brand" href="#">Alpha Blog</a>
blir detta:
<%= link_to "Alpha Blog", root_path, class: "navbar-brand", id: "logo" %>
Förnya sidan och se:
Och nu kan du på vilken sida som helst navigera till root_path (indexsidan) genom att klicka på ALPHA BLOG.
Nästan, låt oss lägga till en länk till sidan Artikelindex:
Istället för den första ”länken” i Navbar:
<li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
Lägg till:
<li><%= link_to "Articles", articles_path %></li>
Och istället för den andra ”länken” i Navbar:
<li><a href="#">Link</a></li>
Lägg till:
<li><%= link_to "Create Article", new_article_path %></li>
Nu kan vi ta bort den andra länken till ”Skapa artikel” i index.html.erb-filen. Det är bara att spåra upp den och ta bort den.
Jag ska också ta bort sökfältet. Vi kommer inte att använda den.
Ripa ut allt nedan:
Vi behöver inte heller den första rullgardinsmenyn, så den försvinner. Hitta bara den här och ta bort den:
Spara filen. Uppdatera din localhost-server och du kommer att se: