Всем привет. Делаю приложение по этому туториалу
www.youtube.com/watch?v=70Pu_28yvdI
Застрял на моменте, когда автор создает пользователя (установив gem advise). Так вот, все сделал по видео. Работает только на новых постах, то есть когда создал уже будучи пользователем. А старые посты не открываются вообще, ошибка следующая:
NoMethodError in Posts#show
Showing /home/roman/muse/app/views/posts/show.html.haml where line #5 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #5):
3
4
5
6
7
8
%p= post.link
%p= post.description
%p= post.user.name
= link_to "Edit", edit_post_path(@post)
= link_to "Delete", post_path(@post), method: :delete, data: { confirm: "Are you sure?" }
Rails.root: /home/roman/muse
Application Trace | Framework Trace | Full Trace
app/views/posts/show.html.haml:5:in `_app_views_posts_show_html_haml___2652678237944587056_70251639245740'
Request
Parameters:
{"id"=>"2"}
Вот код файла post_controller.rb
class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
def index
@posts = Post.all.order("created_at DESC")
end
def show
end
def new
@post = current_user.posts.build
end
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def edit
end
def update
if @post.update(post_params)
redirect_to @post
else
render 'edit'
end
end
def destroy
@post.destroy
redirect_to root_path
end
private
def find_post
@post = Post.find(params[:id])
end
def post_params
params.require(:post).permit(:title, :link, :description, :image)
end
end
Код файла show
= image_tag @post.image.url(:medium)
%h1= @post.title
%p= @post.link
%p= @post.description
%p= @post.user.name
= link_to "Edit", edit_post_path(@post)
= link_to "Delete", post_path(@post), method: :delete, data: { confirm: "Are you sure?" }
Уже все проверил 20 раз. Прошу помощи!
UPD. id разные
2.2.0 :006 > Post.first
Post Load (1.2ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT 1
=> #<Post id: 1, title: "", link: "", description: "", created_at: "2015-02-21 17:43:16", updated_at: "2015-02-22 05:49:10", user_id: 1>
2.2.0 :007 > Post.last
Post Load (0.6ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" DESC LIMIT 1
=> #<Post id: 6, title: "Amazon.com Redesign", link: "#", description: "Try to retouch amazon.com homepage with material d...", created_at: "2015-02-22 06:36:12", updated_at: "2015-02-22 06:43:43", user_id: 1>