1

Ich arbeite an einem Projekt, das die folgenden Design-Foren Beiträge mit Kommentaren haben. Ich lese die Ruby Guidance http://guides.rubyonrails.org/layouts_and_rendering.html#overview-how-the-pieces-fit-together und es heißt, eine Action-Vorlage aus einer anderen Aktion zu rendern muss ich so etwas verwenden render "posts/index".Rendern der Vorlage einer Aktion von einem anderen Controller

Ich versuche, alle Beiträge eines Forums in diesem Forum zu drucken. Ich habe die Datenbank und das Modell eingestellt, bin mir aber nicht sicher, wie ich mit den Controllern umgehen soll.

Wie kann ich Beiträge/Index in den Foren/show/i (wo ich die ID des Forums ist) aufrufen.

Wie kann ich die Beiträge im Forum drucken und wie kann ich nur die Beiträge drucken, die zu diesem bestimmten Forum gehören?

wenn ich versuche, "Beiträge/Index" in der Index-Funktion des Forums Controller zu nennen zu machen, bekomme ich diese Fehlermeldung:

ActionView::MissingTemplate in Forums#show 


Showing /home/ubuntu/workspace/app/views/forums/show.html.erb where line #26 raised: 

Missing partial posts/_index with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: 
    * "/home/ubuntu/workspace/app/views" 
    * "/usr/local/rvm/gems/ruby-2.3.4/gems/devise-4.3.0/app/views" 

<%= render 'posts/index' %>

die oben hervorgehoben rot.

Danke für Ihre Zeit.

+0

Haben Sie die Modelle miteinander verknüpft? Wenn nicht, irgendeinen Grund, warum Sie nicht tun? –

+0

@JulianG. Ich habe die Modelle mit 'has_and_belongs_to_many: x' für das Post-Modell und das gleiche für das Forum-Modell verbunden (wobei x der entgegengesetzte Tabellenname ist) –

Antwort

1

Da Sie die Modelle miteinander verknüpft haben, würde ich es so machen. Ihrer Ansicht Forum zeigen:

<%= render partial: 'posts/index', locals: {forum: @forum} %> 

dann die Teilansicht posts/_index.html.erb erstellen:

<% forum.posts.each do |post| %> 
    <div><%= post.your_attributes %></div> 
    <div><%= render partial: 'comments/index', locals: {forum: forum, post: post} %> 
<% end %> 

schließlich eine Teilansicht Kommentare/_index.html.erb erstellen:

<% post.comments.each do |comment| %> 
    <div><%= comment.your_attributes %><div> 
<% end %> 

Die lokale Option übergibt diese Variablen an Ihre Partial, um dort verwendbar zu sein.

Verwandte Themen