2017-08-15 19 views
0

Ich arbeite an einem Projektblog von mir. Ich bin ein Neuling Entwickler mit Ruby on Rails ....NoMethodError in BlogsController # show

Ich bin eine schlüsselnde Juwel installieren und dann installiert die Devise Juwel für auth .. Ich denke, das ist ein Auth-Fehler, aber ich habe keine Ahnung, was wirklich passiert. Ich kann den Post auf meiner Indexansicht anzeigen lassen, aber wenn ich versuche, auf den Link zur Show-Ansicht zu klicken, zeige ich diesen Fehler an ... Bitte Hilfe !!!

Unten ist mein Controller, Routen und Modell ....

Der Fehler, den ich halten, ist immer

NoMethodError in BlogsController # zeigen

case filter 
    when Symbol 
    lambda { |target, _, &blk| target.send filter, &blk } 
    when String 
    l = eval "lambda { |value| #{filter} }" 
    lambda { |target, value| target.instance_exec(value, &l) } 
...... 

mein Controller

class BlogsController < ApplicationController 
    before_action :set_blog, only: [:show, :edit, :update, :destroy] 
    before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy] 

    def index 
    @blog = Blog.all 
    end 

    def new 
    @blog = Blog.new 
    end 

    def create 
    current_user.blogs.create(blog_params) 
    redirect_to blogs_path 
    end 

    def show 
    @blog = Blog.friendly.find(params[:id]) 
    end 

    def edit 
    @blog = Blog.friendly.find(params[:id]) 
    if @blog.user != current_user 
     return render text: 'Not Allowed', status: :forbidden 
    end 
    end 

    def update 
    @blog = Blog.friendly.find(params[:id]) 

    if @blog.user != current_user 
     return render text: 'Not Allowed', status: :forbidden 
    end 

    @blog.update_attributes(blog_params) 
    redirect_to root_path 
    end 

    def destroy 
    @blog = Blog.friendly.find(params[:id]) 
    if @blog.user != current_user 
     return render text: 'Not Allowed', status: :forbidden 
    end 

    @blog.destroy 
    redirect_to root_path 
    end 

private 

    def blog_params 
    params.require(:blog).permit(:name, :description) 
    end 
end 

WEGE

Rails.application.routes.draw do 
    devise_for :users 
    resources :blogs 
    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
    root 'portfolio#index' 

end 

MODEL

class Blog < ApplicationRecord 
    extend FriendlyId 
    friendly_id :name, use: :slugged 

    belongs_to :user 
end 

Antwort

0

Es sieht so aus, dass Sie freundlich id gem verwenden, bitte stellen Sie sicher, dass Sie mit dem Edelstein richtig nach Ihrem Blog Modell konfiguriert readme und führen Sie die Migration durch, um das Slug-Feld in das Modell aufzunehmen.

Auch, wenn Sie vorherige Aufzeichnungen ohne Butzen haben, Ihre Schienen Konsole öffnen und ausführen:

Blog.find_each(&:save)