2016-03-20 14 views
-2

Ich bin neu auf Schienen und versuchen, ein kleines Projekt zu bauen, um sich mit dem Framework vertraut zu machen. Ich versuche gerade, eine sehr einfache Ansicht zu erstellen, die angibt, wie viele Sterne die durchschnittliche Bewertung gibt (ähnlich wie das Amazon 5-Star-Bewertungssystem). Dieses eine Problem kann ich nicht selbst herausfinden. Ich habe eine "stars_view" erstellt, aber der Rails-Code wird keinen HTML-Code wiedergeben. Es ist wahrscheinlich ein Anfängerfehler, aber ich habe es seit Tagen nicht gefunden.Rails Ansicht nicht Rendering HTML-Code

Dies ist, wie ich die Teilansicht machen:

<div class="col-sm-8"> 
    <h2><%= @document.title %></h2> 
    <%= render :partial=>'application/stars_view', :locals => {:number_of_stars => @document.average_rating_number_of_stars} %> 
    <br/>von 
    <%= @document.user.email %> 
     <br/> 
     <p> 
     <%= @document.description %> 
     </p> 
</div> 

Dies ist der Code meines Teils ist:

<div id="stars_view"> 
    Stars 
    <%= 
    #this link is for test purposes but even this does not show. 
    link_to 'Back', documents_path 
    rounded_number_of_stars = (number_of_stars.to_int*2.0)/2.0 
    max_number_of_stars = 5 
    drawn_number_of_stars = 0 
    while rounded_number_of_stars >= 1 do 
     image_tag("stars/star_full.png", :class => "img-responsive") 
     rounded_number_of_stars -= 1 
     drawn_number_of_stars += 1 
     #byebug stops here 
     #byebug 
    end 
    if rounded_number_of_stars == 0.5 
     image_tag("stars/star_half.png") 
     drawn_number_of_stars += 1 
     #and here 
     #byebug 
    end 
    while drawn_number_of_stars < max_number_of_stars do 
     image_tag("stars/star_empty.png") 
     drawn_number_of_stars += 1 
     #and here 
     #byebug 
    end 
    %> 
</div> 

Dies ist der HTML-Code, den ich in Safari erhalten:

<div id="stars_view"> 
    Stars 

</div> 

Ich weiß, dass es wahrscheinlich einige Fehler in der Ansicht selbst gibt. Ich werde diese später lösen. Für jetzt würde jede Hilfe, die Schienen irgendein HTML erzeugt, geschätzt. Das Teil wird als application/_stars_view.html.erb gespeichert, alle Bilder sollten auch am richtigen Ort sein.

Antwort

2

Die <%= Syntax gibt nur das letzte aus, was der Code zurückgibt. Nicht alles drin. Deshalb sehen Sie keine Ausgabe.

Alles, was Sie auf dem Bildschirm anzeigen möchten, muss in seinem eigenen <%= Tag sein. Um beliebigen Code auszuführen, verwenden Sie <%.

Zum Beispiel:

<%- while rounded_number_of_stars >= 1 do %> 
    <%= image_tag("stars/star_full.png", :class => "img-responsive") %> 
    <% rounded_number_of_stars -= 1 
     drawn_number_of_stars += 1 
    %> 
<% end %> 

Etcetera.