-1

<%= @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
4

1 に答える 1