To ćwiczenie było trochę trudne. Pomyślałem, że opublikuję moje rozwiązanie, aby sprawdzić, czy ktoś zrobił to inaczej, czy jest ktoś, kto zna lepszy sposób.Dodaj wyświetlacz JavaScript do strony głównej, aby odliczać od 140 znaków. (Poradnik Rails, 2. Ed, Rozdział 10, Ćwiczenie 7)
Nie jestem pewien co do najlepszych praktyk dotyczących korzystania z Pipeline aktywów. Na przykład, poprawna kolejność umieszczania elementów w pliku manifestu aplikacji application.js lub kiedy umieszczać elementy w lib w porównaniu do aplikacji. Właśnie dodałem do biblioteki następujące elementy, aby spróbować uruchomić to.
Od Michael Hartl's Rails Tutorial 2nd ed Rozdział 10, Ćwiczenie 7:
(wyzwanie) Dodaj wyświetlacz JavaScript do strony głównej odliczać od 140 znaków.
Najpierw przeczytałem ten numer post about jQuery Twitter-like countdowns, który podał kod, aby to zrobić.
Następnie, zaktualizowane app/views/shared/_micropost_form.html.erb wyglądać tak:
<%= 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 %>
Potem stworzył JavaScripts w katalogu lib i dodał plik
lib/aktywa /javascripts/microposts.js
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);
});
na koniec dodałem odrobinę CSS
app/assets/stylów/custom.css.scss
/* micropost jQuery countdown */
.countdown {
display: inline;
padding-left: 30px;
color: $grayLight;
}
Wreszcie dodać dyrektywę do app/assets/JavaSkrypty/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require microposts
//= require_tree .
wynik końcowy wygląda tak http://grab.by/dbC6
Pytanie: błędem byłoby umieścić oczywistego li nes po //= require_tree .
Na przykład działa to, ale nie jestem pewien, jaka byłaby różnica, w porównaniu do dodania linii powyżej drzewa.
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
//= require microposts
Proponuję oddanie microposts.js plik w aplikacji/assets/javascripts /, w ten sposób nie musisz martwić się dodawaniem dodatkowego wiersza w aplikacji/assets/javascripts/application.js, ponieważ zostanie on automatycznie włączony przez '// = require_tree.". W przeciwnym razie wygląda dobrze i działa dobrze. – jonyamo
Dziękujemy za udostępnienie swojego kodu. Odniosłem się do tego, kiedy wykonałem swoją implementację odliczania, a następnie zadałem kilka pytań na temat SO [tutaj] (http://stackoverflow.com/q/10955850/567863). Mam nadzieję, że jeśli dostarczysz ci jakiś materiał referencyjny w taki sam sposób, jak dla mnie to pytanie. –