Ruby on Rails Monday, February 17, 2014

It is belongs_to :post   ----------- not posts

On Thursday, 13 February 2014 12:27:48 UTC+5:30, Nadia Vu wrote:

Hi there, I'm very new to RoR please be kind.

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<p>
 7Tags:
 8<% @post.tags.each do |tag| %>
 9<%= link_to tag.name, tag_path(tag) %>
10<% end %>
11</p>
 

 

 

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  ~                                                                                      

my tag.rb

  1 class Tag < ActiveRecord::Base    2   has_many :taggings    3   has_many :posts, through: :taggings    4     5 end 

post.rb

  1 class Post < ActiveRecord::Base    2     3     has_many :comments, dependent: :destroy    4     has_many :taggings    5     has_many :tags, through: :taggings    6     validates :title,    7             presence: true,    8                length: { minimum: 5 }    9    10   def tag_list   11    self.tags.collect do |tag|   12       tag.name   13   end.join(", ")   14   end   15   def tag_list=(tags_string)   16     tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq   17     new_or_found_tags = tag_names.collect { |name| Tag.find_or_create_by(name: name) }   18     self.tags = new_or_found_tags   19   end   20 end  ~       

and my posts_helper

  1 module PostsHelper    2   def post_params    3     params.require(:post).permit(:title, :body, :tag_list)    4   end    5 end

Please let me know if I can add any more code that you would need to see

Please please help. I really need to get out of this little rut. And any comments would be appreciated.

 

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/ab6b8df7-5eed-423a-aab1-42468426e532%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment