2017-02-21 4 views
0

Ich habe eine einfache Show-Methode, die alle Nachrichten in einer Konversation rendern muss.rails rendering Datenbankinformationen in html

Alles ist in meinem Code einfach, ich eine Show-Methode haben, die zu diesem HTML (show.html.haml) geht:

%section#list 
    = @conversation.messages.each do |message| 
    .row 
     = message.content 
     = message.participant.user_id 

Und wenn ich zu dieser Show Seite gehen, ich habe meine Inhalte, aber ich habe auch eine zufällige Zeile von der Datenbank (mein HTML enthält nichts anderes). Hier ist, was ich bekommen: (. I ein Leerzeichen hinzugefügt direkt neben den < und> Zeichen sonst würde SO einfach machen, aber sie sind nicht hier im original [#])

This is a test 1 

[#< MyghtDefaultMessenger::Message id: 1, content: "This is a test", deleted: false, participant_id: 1, created_at: "2017-02-13 14:52:45", updated_at: "2017-02-13 14:52:45" >] 

Hier ist meine Controller-Methode in conversation_controller:

def show 
    @conversation.messages.order(:created_at) 
end 

und die einzige Besonderheit ist, dass mein Gespräch viele Teilnehmer hat, meine Teilnehmer viele Nachrichten haben, und ich erhalte die Nachrichten eines Gesprächs durch die Teilnehmer.

+1

Nie verwendet HAML, so ist dies eine Vermutung. Ich denke, es ist wegen dieser '=' in '= @ conversation.messages.each do | message |'. In ERB wird '=' nicht verwendet, wenn Sie beispielsweise nicht die Ausgabe dieses bestimmten Ruby-Codes drucken möchten. 'Jeder' Block. – Sajan

Antwort

1

Sie müssen = mit -

  • = druckt das Ergebnis der ausgewerteten Code ändern
  • - wird es nur
  • bewerten

Ändern Sie den Code zu

%section#list 
    - @conversation.messages.each do |message| 
    .row 
     = message.content 
     = message.participant.user_id 

Die zweite Ausgabe, die Sie erhalten, ist das Ergebnis, das zurückgegeben wird, nachdem die @conversation.messages.each do |message| ausgewertet wurde.

HINWEIS: Verwenden Sie - immer dann, wenn Sie nur für z. each, if - else, Zuweisen von Variable in haml

+0

Wow, vielen Dank, es sieht jetzt lächerlich aus, dass du es gesagt hast, aber wenn du es nicht weißt .. danke nochmal – RiddlerNewComer