Can someone tell me how this works, I just don’t understand what’s going on here
_form.html.erb
<%= form_for [post, comment], remote: true,
html: {
class: “new_blog_comment”, id: “new_blog_comment” } do |f| -%>
<%=t :leave_a_comment, scope: 'blogit.comments'%>
<%= field do %>
<%= f.label :body, t(:your_comment, scope: ‘blogit.comments’) %>
<%= f.text_area :body %>
<%= errors_on(comment, :body) %>
<% end %>
<%= actions do %>
<%= f.submit t(:add_comment, scope: ‘blogit.comments’), :disable_with => t(:adding_comment, scope: ‘blogit.comments’) %>
<% end %>
<% end -%>
before_action :find_commentable, only: :create
def create
commentable = commentable_type.constantize.find(commentable_id)
@comment = Comment.build_from(commentable, current_user.id, body)
user_id = commentable.user_id
respond_to do |format|
if @comment.save
make_child_comment
format.html { redirect_to(“/page/#{user_id}”, :notice => ‘Comment was successfully added.’) }
else
format.html { render :action => “new” }
end
end
end
def find_commentable
@commentable_type = params[:commentable_type].classify
@commentable = @commentable_type.constantize.find(params[:commentable_id])
end
create.js.erb
var $form = $(“form#new_blog_comment”);
<% if @comment.save %>
$(“#comments”).append(“<%= escape_javascript(render(@comment)) %>”);
$form.get(0).reset();
<% else %>
$form.html(“<%= escape_javascript(render(‘form’)) %>”);
<% end %>