Ich möchte ein Element Inhalt setzen, falls sie leer ist.
Der html.erb
Code ist unten:Arbeits jQwery Code funktioniert nicht in bedingten
<div class="comments-section">
<% if micropost.comments.any? %>
<ol id="comments_micropost-<%= micropost.id %>">
<% micropost.comments.each do |comment| %>
<%= render comment %>
<% end %>
</ol>
<% end %>
</div>
Das Element I gesetzt werden soll der Inhalt <div class="comments-section">
ist. Sein Inhalt ist leer, wenn der Micropost noch keine Kommentare hat.
ich die Wirkung von Kommentaren mit Javascript in create.js.erb
erstellen handhaben: Ich schrieb zwei Zeilen Code, je nachdem, ob micropost.comments
Null ist oder es ist nicht nil:
Fall 1: micropost noch nicht Kommentare hat (micropost.comments.any?
ist falsch) :
$('#micropost-<%= @micropost.id %>').find('.comments-section').html("<%= escape_javascript(render partial: 'comments/first_comment') %>");
Fall 2: micropost hat kommentiert bereits (micropost.comments.any?
ist true):
var comments = $('ol#comments_micropost-<%= @micropost.id %>');
comments.append('<%= escape_javascript(render partial: @comment) %>');
Beide Teile des Codes arbeiten, wenn sie getrennt verwendet werden. Doch der Code von Fall 1 funktioniert nicht, wenn sie mit Fall 2 in den folgenden bedingten eingefügt zusammen:
if (comments == null) {
$('#micropost-<%= @micropost.id %>').find('.comments-section').html("<%= escape_javascript(render partial: 'comments/comments') %>");
}
else {
comments.append('<%= escape_javascript(render partial: @comment) %>');
};
Ich verstehe nicht, warum, wenn if (comments == null)
der Code nicht ausgeführt wird. Ich habe auch versucht mit if (comments == undefined)
und mit if (!comments)
ohne Verbesserungen.
Stattdessen wird der else
Teil des bedingten erfolgreich ausgeführt.
keine Änderungen auch mit '' comments.blank OR 'Kommentare == '''?. Ja 'Kommentare' stammen von' var comments': Wie kann ich die Länge gleich 0 ausdrücken? – Asarluhi
@Asarluhi, wenn die Länge größer als 0 ist, als es verfügbar ist. Wenn die Länge 0 ist, ist sie nicht verfügbar. – Vishal
Even 'if (comments.length === null)' funktioniert nicht. Ich weiß nicht warum, eine der obigen Lösungen sollte an dieser Stelle funktionieren. – Asarluhi