2016-03-29 6 views
0

ich eine teilweise in # Ansicht Post zeigen die Namen _comments.html.erbIn Schienen Ich kann den neuen Kommentar mit Iteration jeder Anzeige erstellt haben

hier es

<p class="text-center">Poster un commentaire</p> 
     <%= simple_form_for [post, post.comments.new] do |f| %> 
     <%= f.error_notification %> 
     <%= f.input :content, label: "Commentaire"%> 
     <%= f.submit "Envoyer", class: "btn btn-primary" %> 
     <% end %> 

ist und es machen wie die <%= render 'comments' %>

und über die teilweise (in # Beitrag anzeigen Show) ich habe eine Iteration wie die

<ul class="list-unstyled"> 
    <% @post.comments.each do |comment| %> 
    <li> 
     <p><% comment.content %></p> 
    <% end %> 
    </li> 
</ul> 

Aber nichts erscheint, wenn ich eine neue Nachricht erstelle, warum nicht.

Ich gebe Ihre mehr Code Details

post.rb

has_many :comments, dependent: :destroy 

comment.rb

belongs_to :user 
belongs_to :post 

Die Route ist:

resources :posts do 
    resources :categories 
    resources :comments 
end 

Kommentare Controller ist

class CommentsController < ApplicationController 

before_action :set_post 

def create 
    @comment = @post.comments.build(comment_params) 
    @comment.user_id = current_user.id 

    if @comment.save 
    flash[:success] = "You commented the hell out of that post!" 
    redirect_to :back 
    else 
    flash[:alert] = "There is a problem with your comment" 
    render root_path 
    end 
end 

def destroy 
    @comment = @post.comments.find(params[:id]) 

    @comment.destroy 
    flash[:success] = "Comment deleted :(" 
    redirect_to root_path 
end 

private 

def set_post 
    @post = Post.find(params[:post_id]) 
end 

def comment_params 
    params.require(:comment).permit(:content, :post_id, :user_id) 
end 
end 

Dank für Ihre Hilfe danken.

+0

Wird beim Aktualisieren der Seite der neue Inhalt angezeigt? –

+0

**

<% = comment.content%>

** - Versuchen ** <%= %> ** statt ** ** <% %> – dp7

+0

@ArslanAli die '=' fehlt –

Antwort

3

Sie haben gerade die = in der Vorlage erb auf der <p> Linie verpasst. Ohne es wird nichts in der Ausgabe angezeigt. Beachten Sie auch, dass die </li> und end Leitungen ausgetauscht werden sollte, so dass diese beiden Blöcke werden miteinander vermischt:

<ul class="list-unstyled"> 
    <% @post.comments.each do |comment| %> 
    <li> 
     <p><%= comment.content %></p> 
    </li> 
    <% end %> 
</ul> 

By the way, gibt es eine andere Art und Weise Sammlung partials zu machen wie:

<ul class="list-unstyled"> 
<%= render :partial => "comment", :collection => @comments %> 
</ul> 

Und Es ist nicht notwendig, die Werte teilweise zu durchlaufen, es wird dies mit dem Parameter :collection gehandhabt, und dann sollte der Teilkommentar wie folgt sein:

<li> 
    <p><%= comment.content %></p> 
</li> 
+0

danke es funktioniert –