2016-05-03 11 views
-1

ich eine CRUD Aktion Setup für Blogundefined lokale Variable oder Methode `Blog‘ für

Dies ist mein Controller

class BlogsController < ApplicationController 

    def new 
    @blog = Blog.new 
    end 

    def create 
    @blog = Blog.new(blog_params) 

    if @blog.save 
     redirect_to @blog 
    else 
     render 'new' 
    end 
    end 

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

    def edit 
    end 

    def destroy 
    end 

    def index 
    @blogs = Blog.all.order(created_at: :desc) 
    end 

    private 

    def blog_params 
     params.require(:blog).permit(:title, :body, :image) 
    end 

end 

Mein Index funktioniert gut, aber wenn ich das „Klick lesen Post“Link, bekomme ich den Fehler: nicht definiert lokale Variable oder Methode` Blog‘

Der Code für meine show.html.erb ist

<html> 
    <head> 

    </head> 
    <body> 
    <div> 
     <h2><%= blog.title %></h2> 
     <h5><%= blog.body %></h5> 
    </div> 
    </body> 
</html> 

Weiß jemand, was los ist?

Antwort

1

Siehe Instanzvariablen:

<h2><%= @blog.title %></h2> 
<h5><%= @blog.body %></h5> 

In Ihrem Controller, Sie Instanzvariable @blog setzen. Rails nimmt alle definierten Instanzvariablen in Ihrem Controller und definiert sie in Ihrer Ansicht. Deshalb müssen Sie instance var.

Verwandte Themen