当尝试为我的讨论模型实现acts_as_commentable gem时,出现以下服务器日志错误:
NameError - uninitialized constant Discussion::Comment:
我已经从自述文件中生成了迁移文件,并运行了db:migrate。
rails generate acts_as_commentable_with_threading_migration
我尝试重新启动应用程序。
我已按照自述文件中的使用说明将其添加到模型文件中:
class Discussion < ApplicationRecord
acts_as_commentable
end
查看代码摘要以尝试显示“讨论”模型的注释列表:
<% Discussion.where(guide_id: @guide.id).order(:created_at).each do|discussion| %>
<% discussion.comment_threads.each do |comment| %>
<p><%= comment.body %></p>
<% end %>
<% end %>
image of error pointing to the view line of code
schema.rb文件包括在gem自述文件中通过迁移添加的注释模型:
create_table "comments", force: :cascade do |t|
t.integer "commentable_id"
t.string "commentable_type"
t.string "title"
t.text "body"
t.string "subject"
t.integer "user_id", null: false
t.integer "parent_id"
t.integer "lft"
t.integer "rgt"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["commentable_id", "commentable_type"], name: "index_comments_on_commentable_id_and_commentable_type"
t.index ["user_id"], name: "index_comments_on_user_id"
end
答案 0 :(得分:1)
问题似乎是当我运行迁移时没有创建comment.rb文件。在删除旧模型文件之前,我可能已经进行了迁移。
rails generate acts_as_commentable_with_threading_migration
在尝试使用acts_as_commentable gem之前,我有一个以前创建的注释模型。我尝试删除迁移,路由,控制器,模型和视图文件,然后使用rails db:drop,然后使用rails db:create和rails db:migrate从头开始。
重新启动服务器后,注释gem现在可以工作。
感谢@Vasilisa的所有帮助!