Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 语句无效的SQLite3::SQLException:没有这样的列。将标签系统添加到博客时_Ruby On Rails_Ruby_Tagging - Fatal编程技术网

Ruby on rails 语句无效的SQLite3::SQLException:没有这样的列。将标签系统添加到博客时

Ruby on rails 语句无效的SQLite3::SQLException:没有这样的列。将标签系统添加到博客时,ruby-on-rails,ruby,tagging,Ruby On Rails,Ruby,Tagging,所以我决定在我的RoR博客中建立一个标签系统。在阅读了《rails入门指南》之后,我将继续阅读JumpstartABS的一篇文章 在这里,我基本上是使用“连接表”方法来映射多个post有多个标记,多个标记有多个post关系 这就是我得到的错误 ActiveRecord::StatementInvalid in Posts#show Showing /home/nadia/blog/app/views/posts/show.html.erb where line #8 raised:

所以我决定在我的RoR博客中建立一个标签系统。在阅读了《rails入门指南》之后,我将继续阅读JumpstartABS的一篇文章 在这里,我基本上是使用“连接表”方法来映射多个post有多个标记,多个标记有多个post关系

这就是我得到的错误

  ActiveRecord::StatementInvalid in Posts#show
  Showing /home/nadia/blog/app/views/posts/show.html.erb where line #8 raised:

  SQLite3::SQLException: no such column: taggings.post_id: SELECT "tags".* FROM "tags"                INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."post_id" = ?
   Extracted source (around line #8):


6   <p>
7     Tags:
8     <% @post.tags.each do |tag| %>
9         <%= link_to tag.name, tag_path(tag) %>
10     <% end %>
11     </p>
如果您想查看其他文件,请告诉我。我希望得到一些帮助,因为这是我的第一个真正的项目。:)

编辑。我的标签

1 class Tagging < ActiveRecord::Base
2   belongs_to :tag
3   belongs_to :post
4 end
1类标记
我在Taggings.rb文件中发现了一个拼写错误/复数

 belongs_to :posts
然后我改成了

 belongs_to :post
然而,重要的是我忘记了我必须重新运行迁移来重新命名列的名称。我通过运行

 Tagging.column_names
发现该列实际上命名错误:posts\u id

跑步后

 rake db:migrate
使用fixed Tagging.rb文件,它通过重新命名该列修复了问题

非常感谢各位
我真的很感谢你的帮助。在过去的几天里,我学到了很多,试图解决这个小问题

您的
@post
可能会返回一个
nil
标记列表
。为什么要使用文本字段呢?(记住
@post.tag_list
将被调用)。(检查)对你说实话,我是按照指示做的,他们不太清楚你为什么这么做。我在这一点上的知识还不足以理解其中的原因。
SQLite3::SQLException:没有这样的专栏:taggings.post_id
正好说明了问题所在。您的标记模型应具有
post\u id
tag\u id
以正确引用多对多关系。你的模式怎么说?(我不明白我之前的评论,我想你编辑了错误)。哦,我明白了。我假设通过说Tagging属于:tag和:post,这将为我提供连接表所需的外键?或者,这是我通过在迁移中定义一个变更方法手动完成的吗?+1是为了关心自己的问题。一定要接受它。
1 class Tagging < ActiveRecord::Base
2   belongs_to :tag
3   belongs_to :post
4 end
 belongs_to :posts
 belongs_to :post
 Tagging.column_names
 rake db:migrate