0

Ich bin wie Sie sehen, ich versuche einfach, Kommentare zu jedem Artikel zu haben Seite auch ich benutze Friendly_id. Das Problem ist, dass ich den Artikel nicht finden kann, indem ich seinen Slug vom Comments-Controller verwende und ich bin mir nicht sicher, wo das Problem liegt.Nicht in der Lage, ein Objekt durch Slug mit frindly_id zu finden Konnte Artikel ohne eine ID nicht finden

Kommentare Controller

class CommentsController < ApplicationController 

    def create 
    @article = Article.friendly.find(params[:slug]) 
    @comment = @article.comments.create(comments_params) 
    redirect_to @article_path(@article) 
    end 

private 

    def comments_params 
    params.require(:comment).permit(:name, :body) 
    end 
end 

Artikel-Controller

class ArticlesController < ApplicationController 
before_filter :authenticate_user!, except: [:index, :show] 



def index 
    @Articles = Article.all 
    end 

    def new 
    @article = Article.new 
    end 

    def create 
    @article = Article.new(article_params) 
     if @article.save 
     redirect_to @article 
     else 
     render 'new' 
     end 
    end 

    def show 
     find_article 
    end 

    def edit 
     find_article 
    end 

    def update 
     @article = Article.find_by_slug(params[:id]) 
     if @article.update(article_params) 
     redirect_to @article 
     else 
     render 'edit' 
     end 
    end 

    def destroy 
     @article = Article.find(params[:id]) 
     @article.destroy 
     redirect_to root_path 
    end 

    private 

    def find_article 
     @article = Article.friendly.find(params[:id]) 
    end 

    def article_params 
     params.require(:article).permit(:title, :content, :slug) 
    end 
    end 

Kommentar

<%= form_for ([@article, @article.comments.build]) do |f| %> 
    <%= f.label :Name %> 
    <%= f.text_field :Name %> 
<br> 
    <%= f.label :Body %> 
    <%= f.text_area :Body %> 
<br> 
    <%= f.submit %> 
<% end %> 

Kommentar

<p><%= comment.content %><p/> 

Artikel Modell

class Article < ActiveRecord::Base 
    has_many :comments 
    extend FriendlyId 
    friendly_id :title, use: [:slugged, :finders] 
end 

Kommentar Modell

class Comment < ActiveRecord::Base 
    belongs_to :article 
end 

Routen

Rails.application.routes.draw do devise_for :users root 'articles#index' resources :articles do resources :comments end end
+0

Können Sie nach der Code für das "Artikel" - und "Kommentar" -Modell? – nqngo

+0

@mqngo Sie sind jetzt da :) – Faisal

+0

Können Sie Ihre routes.rb teilen? – oreoluwa

Antwort

0

Ich denke, es so sein sollte:

class CommentsController < ApplicationController 

    def create 
    @article = Article.friendly.find(params[:article_id]) 
    @comment = @article.comments.create(comments_params) 
    redirect_to article_path(@article) 
    end 

private 

    def comments_params 
    params.require(:comment).permit(:name, :body) 
    end 
end 
+0

Ich denke, es hat etwas getan! immer noch ein Fehler gedacht, aber ein anderer. undefinierte Methode 'content 'für # Meinten Sie? Bedenken und es zeigt auf <% = comment.content%> – Faisal

+0

könnten Sie einen Beispielkommentar posten? 'Comment.first' – oreoluwa

+0

2.3.1: 001> Kommentar.last Kommentar Laden (1.7ms) SELECT" Kommentare ". * FROM" Kommentare "ORDER BY" Kommentare "." ID "DESC LIMIT 1 => # 2.3.1 : 002> – Faisal