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