<%= @post.admin_user.name %> を呼び出したときに NoMethodError が発生しました。修正方法がわかりません。
抽出されたソース (4 行目あたり):
<h1><%= @post.title %></h1>
<p><%= @post.body %></p>
<small>Post created at <%= @post.created_at.strftime('%b %d. %Y') %></small><br/> <br/>
<%= @post.admin_user.name %>
<p>Category: <%= link_to @post.category.name, category_path(@post.category.id) %></p>
<%= link_to 'Edit Post', edit_post_path %> | <%= link_to 'Go Back', posts_path %> | <%= link_to 'Delete Post', @post, :confirm => "Don't do it man!", :method => :delete %>
</div>
c:/Sites/blog/app/views/posts/show.html.erb を表示すると、5 行目が発生します。
nil:NilClass の未定義のメソッド `name'
これは私の posts_controller.rb です
class PostsController < ApplicationController
def index
@post = Post.all
end
def new
@post = Post.new
@category = Category.all
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to posts_path, :notice => 'Your post has been posted!'
else
render 'new'
end
end
def post_params
params.require(:post).permit(:title, :body, :category_id, :admin_user_id, :admin_user, :name)
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
redirect_to post_path, :notice => 'Your post has been updated.'
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
@user = AdminUser.all
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to posts_path, :notice => 'Your post has been deleted.'
end
end
これは私の投稿です.rb
class Post < ActiveRecord::Base
belongs_to :category
belongs_to :admin_user
end
私の admin_user.rd
class AdminUser < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
has_many :posts
end