I have ajax based micropost’s comments on the user page. It works, but
not correctly. When I submit a new comment to ANY micropost, it always
posts to the LAST micropost! Then, if I refresh the page by “F5”,
everything falls into place - the new comment is in the correct
micropost. What I’m doing wrong? Thanks in advance.
comment.rb
class Comment < ActiveRecord::Base
attr_accessible :comment_content
belongs_to :user
belongs_to :micropost
end
comments_controller.rb
class CommentsController < ApplicationController
before_filter :signed_in_user, only: [:create, :destroy]
def create
@micropost = Micropost.find(params[:micropost_id])
@comment = Comment.new(params[:comment])
@comment.micropost = @micropost
@comment.user = current_user
respond_to do |format|
@comment.save
format.html { redirect_to current_user }
format.js
end
end
end
_micropost.html.erb
_comment_form.html.erb
<%= form_for ([micropost, @comment]), :remote => true do |f| %>
<%= render ‘shared/error_messages’, object: f.object %>
<%= f.text_area :comment_content, :size => “40x2” %>
Comment
<% end %>
_comment.html.erb
<%=
wrap(comment.comment_content) %>
Posted by <%= comment.user.name %> <%=
time_ago_in_words(comment.created_at) %> ago.
create.js.erb
$(’#comments’).html("<%= escape_javascript(render(:partial =>
@micropost.comments)) %>");