Mariko, note that your error message says:
"Couldn''t find Post without an ID"
Which means that ActiveRecord has been asked to go find a Post, but no
id was supplied. When you create a default model in a migration with
Rails like:
create_table :posts do |t|
t.column :some_column, :string
end
you will also get - automatically - a column called "id". Just plain
"id". Of course you also get your Post model and a bunch of other
stuff for free. In you Comment model (comments table) the column
called "post_id" is how Rails goes and finds the relevant Post object
in their belongs_to relationship.
So a few things to look at:
(a) Suggest you use the form_for version of forms tags when using a
model, rather than form_tag, it does more for you.
(b) Your view is refering to @post, but i see nothing that sets than
instance variable in your controller
(c) So I suspect the error you''re getting, assuning its when you
"submit" is that your find() is failing because no "id" is
set. But
again, not the error is referring to the "id" column on the Post
object - not the "post_id" column on the Comment object.
A bit hard to tell from the elements of code you submitted. Happy to
take a quick look if you email the model, controller and view to me at
kipcole9 -at- gmail dot you-know-what.
Cheers, --Kip
On Aug 8, 12:12 pm, "Mariko C."
<rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
wrote:> Hello,
>
> I''m a newbie to rails, ruby, and web development in general, and
I''m
> having trouble with belongs_to and has_xxx relationships.
>
> For example, right now I''m trying to get the 15 minute blog which
is
> listed on the page to work, and when I try to post a comment, I''m
> getting this message:
>
> "Couldn''t find Post without an ID"
>
> Also, when I try and scaffold the comments attribute, post_id does not
> show up on the list. However, it seems to be there when I look at the
> schema file:
>
> create_table "comments", :force => true do |t|
> t.column "body", :text
> t.column "post_id", :integer
> end
>
> I''m thinking the post_id attribute not showing up as a parameter
when I
> run the scaffold and the "Couldn''t find Post without an
ID" is related.
>
> This is the code in the controller:
>
> def comment
> Blogitem.find(params[:id]).comments.create(params[:comment])
> flash[:notice] = "Added your comment"
> redirect_to :action => "show", :id => params[:id]
> end
>
> And this is the code that I''m trying to run:
>
> <%= form_tag :action => "comment", :id => @post %>
> <%= text_area "Comment", "body" %><br/>
> <%= submit_tag "Comment!" %>
> </form>
>
> Very concrete help is really appreciated, since I''m quite new at
both
> rails and ruby. Also, does anyone know where I can find the source code
> to the 15 minute blog? I keep checking and double checking my
> code/databases/etc. against what''s in the video but I''m
not seeing the
> problem. Thank you very much!
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---