Adding comments

Heya,

I've been toying around a little more with rails and getting the hang of
it. Nonetheless the, most likely, easiest thing for you i can't achieve
somehow. I'm trying to add some comments to my post(complaint)(Same way
the starter tutorial does
it(http://guides.rubyonrails.org/getting_started.htm)) but i can't seem
to get it to work. It goes to complaints/3/comments and gives me a blank
page. There is a record being created in my database, but except for the
complaint_id it's empty and the create function doesn't redirect me back
to the complaint it should be redirecting to. Could you guys take a look
at my code?

The create function in comments_controller.rb
  def create
    @complaint = Complaint.find(params[:complaint_id])
    @comment = @complaint.comments.create(params[:form])
    respond_to do |format|
      if @comment.save
      else
      flash[:notice] = "Fail!"
      end
    redirect_to complaint_path(@complaint)
    end
  end

The form in comments/_form.html.erb which is rendered in my
complaints/show view

<%= form_for([@complaints, @complaints.comments.build]) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :comment %><br />
    <%= f.text_area :comment %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Thanks in advance

Try this:

controller:

def create
@complaint = Complaint.find(params[:complaint_id])
@comment = @complaint.comments.create(params[:comment])
respond_to do |format|
unless @comment.save

   flash[:notice] = "Fail!"
 end
 format.html { redirect_to complaint_path(@complaint) }

end
end

check the params array. While creating the comments, pass the params array appropriately. I think may be that’s where the problem lies. As for redirect to another page, you need to write your redirect statements in “format.html { redirect_to …}”

Have a look at the Rails Guide on Debugging, that will show you
techniques that you can use to debug the code and work out what is
going on.

Colin