Hi to all. I''ve a very big problem. I know this can seem very loing,
but
please, try to read it. I have a simply blog, with posts and their
comments. I''ve two tables in my db, posts, with post id, text and
comments_count to store the number of comments-children of each post (as
recomanded to do in AWDWR); and the table comments, with comment id,
post_id for the post they''re referred to, and text (there are many
other
fields, but they''re not importat here). I have a home_controller, this
is the code:
class HomeController < ApplicationController
def index
@posts = Post.find(:all, :order => "data DESC")
end
def show_comment
@posts = Post.find(:all, :order => "data DESC")
@comments = Comment.find(:all, :conditions => [''post_id=
?'',
params[:id] ])
end
def add_comment
@posts = Post.find(:all, :order => "data DESC")
@comments = Comment.find(:all, :conditions => [''post_id=
?'',
params[:id] ])
@com = Comment.new(:post_id => params[:post_id])
if flash[:comment]
@comment = flash[:comment]
else
@comment = Comment.new
end
end
def save_comment
if request.post?
@comment = Comment.new(params[:comment])
if @comment.save
flash[:notice] = "Commento inserito con successo"
redirect_to("/home/show_comment/" +
params[:comment][:post_id])
else
flash[:comment] = @comment
redirect_to("/home/add_comment/" +
params[:comment][:post_id])
end
end
end
end
and three views, index, add_comment and show_comment.
The problem arise with add_comment. When i want to add a comment for a
post without any comment (i''m the first to insert a comment for a
post),
it displays:
>You have a nil object when you didn''t expect it!
>The error occurred while evaluating nil.post_id
>
>Extracted source (around line #17):
>
>14: </p>
>15: <% end %>
>16: <% end %>
>17: <%= com.post_id %>
>18: <% if @com.post_id == post.id %>
>19: <%= error_messages_for :comment %>
>20: <% form_for @comment, :url => {:action =>
:save_comment} do |form| %>
>
This is the code for the add_comment page
<% for post in @posts %>
<div class="post">
<p>Titolo: <%= post.titolo %> <span>data: <%=
post.data
%></span></p>
<p>Testo: <br /><%= post.testo %></p>
<span><%= link_to ''Commenti('' +
post.comments.size.to_s + '')'',
:action => ''show_comment'', :id => post
%></span>
<span><%= link_to ''Aggiungi un commento'',
:action =>
''add_comment'', :id => post %></span>
<div id="comments">
<% for com in @comments %>
<% if com.post_id == post.id %>
<p
class="<%cycle(''comment-entry-odd'',''comment-entry-even'')%>">
<%= com.testo %>
</p>
<% end %>
<% end %>
<% if com.post_id == post.id %>
<%= error_messages_for :comment %>
<% form_for @comment, :url => {:action =>
:save_comment} do |form| %>
<a name="commenti"></a>
<p>
<label
for="comment_autore">Autore:</label><br />
<%= form.text_field :autore%></p>
<p>
<label
for="comment_testo">Testo:</label><br
/>
<%= form.text_area :testo %></p>
<%= form.hidden_field :post_id, :value =>
post.id %>
<%= submit_tag "Invia commento" , :class
=>
"submit" %>
<% end %>
<%end%>
</div> <!-- end comments -->
</div> <!-- post -->
<% end %>
PLEASE HELP ME to solve this problem!
--
Posted via http://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
-~----------~----~----~----~------~----~------~--~---