关联 post 和用户

associating post and user

这是与原始问题相关的三个文件,我认为...请原谅我的无知...rails 生成器为您做了很多工作,所以我不是很明白还没有连接。

    class Post < ActiveRecord::Base

      has_many :comments
      belongs_to :user
      default_scope { order('created_at DESC') }

end

class AddUserToPosts < ActiveRecord::Migration
  def change
    add_column :posts, :user_id, :integer, :name 
    add_index :posts, :user_id  
  end
end

    class CreatePosts < ActiveRecord::Migration
  def change
create_table :posts do |t|
  t.string :title
  t.text :body
  t.text :name  #added this

  t.timestamps
   end
 end
end

where the error is occuring:

     <%= link_to post.title, post %>
        </h4>
       <small>
          >> submitted 
          <%= time_ago_in_words(post.created_at) %> ago by 
          <%= post.user.name %>  <br/>         
          <!-- <%= post.comments.count %> Comments  -->
      </small>

Ruby 基本上是在告诉您第 11 行 (<%= post.user.name %>) 您的 post 对象的 user 关联是 nil(即非-存在值,在 Ruby 中是 class NilClass 的单例实例)。

因此您试图在 nil 上调用 #name 方法,显然没有这样的方法,因此 NoMethodError

只需添加一个检查以确保用户在打印其名称之前存在 <%= post.user.name unless post.user.nil? %> 或确保始终有一个用户与您的帖子相关联(例如通过 validation),只要合适最适合您的情况。