I wasn’t sure where to go but I was hoping I could find help here after days of hair pulling. Stackoverflow was not successful.
I have followed the Official Beginners Guide to ROR and made a blog.
I wanted to take it further and add a tagging system to the blog. Im getting errors and I don’t have enough knowledge of ruby to determine what is causing them. Any thoughts/help would be really appreciated.
So this is the error
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
7Tags:
8<% @post.tags.each do |tag| %>
9<%= link_to tag.name, tag_path(tag) %>
10<% end %>
11
And this a small chunk of the
post_controller:
def new
27 @post = Post.new
28 end
29 def create
30 @post = Post.new(post_params)
31
32 if @post. save
33 redirect_to action: :show, id: @post. id
34 else
35 render 'new'
36 end
37 end
38
39 def destroy
40 @post = Post.find(params[:id])
41 @post. destroy
42
43 redirect_to action: : index
44 end
This is my tag_controller
1 class TagsController < ApplicationController
2
3 def show
4 @tag = Tag.find(params[:id])
5 end
It says there is no column post_id in the table taggings. Is it that
you do not think
it should be looking for that column or is it that you know there
should be but think that
it does exist?
You have neglected to show us taggings.rb but I presume it contains
belongs_to post.
Hi, thank you for that.
I have made that change. From
belongs_to :tag
belongs_to :posts
to
belongs_to :tag
belongs_to :post
However. I am still getting the same error.
Looking at many similar open stackoverflow answers and questions I honestly thought the pluralization was going to fit it. But unfortunately it still hasn’t.
Hi, thank you for that.
I have made that change. From
belongs_to :tag
belongs_to :posts
to
belongs_to :tag
belongs_to :post
However. I am still getting the same error.
Looking at many similar open stackoverflow answers and questions I honestly
thought the pluralization was going to fit it. But unfortunately it still
hasn't.
Are you still getting the error saying that there is no column post_id
in the table taggings? I askied this in my first reply and you did
not answer. If it is still saying that have you checked that there is
such a column?
Yep. All fixed now.
I checked for the columns like you asked. And I found out that the typo/pluralization in the Taggings.rb file named the column wrong
ie:
belongs_to :posts
made the column name posts_id as opposed to post_id
after fixing the typo, I rolled back the migration, and ran the migration again to change the name of the table.
AND NOW IT WORKS!
Thank you so much everyone! I really appreciate all the help!
Error messages can be very confusing and it is easy to miss the one
that is important in a batch of other messages. It is always worth
looking carefully through the errors in the hope of finding one that
is useful, in this case the one saying that the column was missing.