2016-05-03 12 views
0

Anstatt alle Notizen pro Tag anzuzeigen, wie können wir nur eine Notiz pro Tag anzeigen, die Notiz, deren note.note_date == date?Wie rendern nur Notizen mit gleichem Datum?

Day 1: Notes/notes # Shows both Day 1 and Day 3 note. Only want to show Day 1 note 
Day 2: Notes/form 
Day 3: Notes/notes # Shows both Day 1 and Day 3 note. Only want to show Day 3 note 
Day 4: Notes/form 
Day 5: Notes/form 

Herausforderungen/show

<% @challenge.dates_challenged.first(@challenge.days_challenged).each_with_index do |date, i| %> 
    Day <%= i + 1 %> 
    <% if @notes.any? { |note| note.notes_date.strftime("%m/%d/%y") == date.strftime("%m/%d/%y") } %> 
    <%= render 'notes/notes' %> 
    <% else %> 
    <%= render 'notes/form', :date => date %> 
    <% end %> 
<% end %> 

Anmerkungen/Hinweise

<% @notes.each do |note| %> 
    <%= note.notes_text %> 
<% end %> 

Noten/form

<%= form_for [@notable, @note] do |f| %> 
    <%= f.text_area :notes_text, placeholder: 'Enter Recap' %> 
    <%= f.date_select :notes_date, selected: date, :order => [:month, :day, :year] %> 
<% end %> 

challenges_controller

def show 
    @notable = @challenge 
    @notes = @notable.notes 
    @note = Note.new 
end 

Zur Erinnerung, schafft ein Benutzer eine Herausforderung. Eine Challenge hat das Attribut days_challenged. Der Benutzer wählt, wie viele Tage in Frage gestellt werden, d. H. 10, 15, 30 usw. Für jeden dieser Tage wird eine notes/form gerendert. Wenn ein note.notes_date einen entsprechenden Tag entspricht, wie können wir dann nur diese eine Note anstelle von notes/form anzeigen?

+0

Können Sie erklären, warum die von Ihnen präsentierte Lösung nicht funktioniert? Gibt es eine Fehlermeldung oder falsche Ausgabe, die zur Verfügung gestellt werden kann? Bearbeitungen der Frage sind besser als Antworten in den Kommentaren. Vielen Dank! –

+0

Hallo @ MichaelGaskill. Ich habe keine Lösung vorgestellt. Ich erklärte, was ich habe, wo jede Note mit "Noten/Noten" gerendert wird. Ich möchte nicht, dass jede Note gerendert wird. Ich möchte nur Notiz, die gleich "date" an diesem jeweiligen Tag gerendert wird –

Antwort

2
<% if @notes.any? 
    @today_notes = @notes.select{ |note| note.notes_date.strftime("%m/%d/%y") == date.strftime("%m/%d/%y") } %> 
    <%= render 'notes/notes' %> 
<% else %> 
... 
<% end %> 

Dann Verwenden Sie @today_notes in den Anmerkungen/Anmerkungen teilweise.

+0

Beat mich bis zum Schlag. Habe es herausgefunden, aber deine Antwort ist knapper. Vielen Dank! –

0

Ändern Sie diese <%= render 'notes/notes' %> teilweise unter eins, und folgen Sie direkt unter note.html.erb-Datei.

Herausforderungen zeigen:

<%= render partial: 'notes/notes', locals:{note: note} %> 

Rename note.html.erb unterstreichen zu _notes.html.erb

Noten/_notes.html.erb:

<%= note.notes_text %> 
+0

Wie beantwortet das die Frage von OP? – Alfie

+0

Was magst du nicht? Ich versuche jedoch, diese Note teilweise zu benutzen. auch, wie ich sehe, hat er die Frage aktualisiert. – 7urkm3n

Verwandte Themen