Diese Übung war ein bisschen schwierig. Ich dachte, ich würde meine Lösung posten, um zu sehen, ob es jemand anders gemacht hat oder ob es jemanden gibt, der einen besseren Weg kennt.Fügen Sie der Startseite eine JavaScript-Anzeige hinzu, um aus 140 Zeichen zu zählen. (Rails Tutorial, 2. Ausgabe, Kapitel 10, Übung 7)
Ich bin nicht sicher, Best Practices für die Verwendung der Asset Pipline .. zum Beispiel die richtige Reihenfolge, um Dinge in die application.js Manifest-Datei zu setzen, oder wenn Dinge in lib versus App zu setzen. Ich gebe einfach folgendes in lib ein, um es zum Laufen zu bringen.
Von Michael Hartl's Rails Tutorial 2nd ed Kapitel 10, Übung 7:
(anspruchsvoll) hinzufügen JavaScript Anzeigeseite zum Start unten von 140 Zeichen zu zählen.
Zuerst las ich diese post about jQuery Twitter-like countdowns, die den Code zur Verfügung stellte.
nächstes I aktualisiert app/views/shared/_micropost_form.html.erb wie folgt aussehen:
<%= form_for(@micropost) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Compose new micropost..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<span class="countdown"></span>
<% end %>
Dann habe ich ein javascripts Verzeichnis in lib und hinzugefügte Datei
lib/Vermögen
function updateCountdown() {
// 140 is the max message length
var remaining = 140 - jQuery('#micropost_content').val().length;
jQuery('.countdown').text(remaining + ' characters remaining');
}
jQuery(document).ready(function($) {
updateCountdown();
$('#micropost_content').change(updateCountdown);
$('#micropost_content').keyup(updateCountdown);
});
/javascripts/microposts.js Schließlich fügte ich ein winziges bisschen CSS
app/assets/Stylesheets/custom.css.scss
/* micropost jQuery countdown */
.countdown {
display: inline;
padding-left: 30px;
color: $grayLight;
}
Schließlich fügt Richtlinie zu dem app/assets/Javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require microposts
//= require_tree .
Das endgültige Ergebnis wie diese http://grab.by/dbC6
siehtFrage: wäre es falsch, das Manifest li zu setzen nes nach //= require_tree .
Zum Beispiel, das funktioniert, aber ich bin mir nicht sicher, was der Unterschied wäre, versus Hinzufügen der Linie über Baum.
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
//= require microposts
würde ich vorschlagen, Ihre microposts.js setzen Datei in App/Assets/Javascripts /, so müssen Sie nicht die zusätzliche Zeile in app/assets/javascripts/application.js hinzufügen, da sie automatisch über '// = require_tree. ' Ansonsten sieht es gut aus und funktioniert gut. – jonyamo
Vielen Dank für die Freigabe Ihres Codes. Ich habe darauf Bezug genommen, als ich die Implementierung des Countdowns durchgeführt habe, was ich dann ein paar Fragen zu SO gestellt habe [hier] (http://stackoverflow.com/q/10955850/567863). Hoffentlich, wenn Sie mir Referenzmaterial zur Verfügung stellen, so wie es Ihre Frage für mich getan hat. –