如何在Rails的JavaScript中重写辅助方法

时间:2019-01-21 18:04:27

标签: javascript jquery ruby-on-rails ruby ajax

我有帮助方法,必须在create.js.erb中创建新注释时调用它。创建注释后需要渲染,而无需使用辅助方法重新加载页面。从create.js.erb帮助器方法使用Js创建注释时不会调用吗?该如何解决?

comments_helper.rb

module CommentsHelper
   def comments_tree_for(comments)
    comments.map do |comment, nested_comments|
      render(comment) +
          (nested_comments.size > 0 ? content_tag(:div, comments_tree_for(nested_comments), class: "replies") : nil)
    end.join.html_safe
  end
end

create.js.erb

$('#reply-comment_<%= @comment.parent_id %>').hide();
$("#comment-cont_<%= @comment.parent_id%>").prepend('<%= j render  @comment %>');

index.html.erb

<div class="jumbotron">
  <div class="container">
    <h1>Join the discussion</h1>
    <p>Click the button below to start a new thread:</p>
    <p>
      <%= link_to 'Add new topic', new_comment_path, class: 'btn btn-primary btn-lg' %>
    </p>
  </div>
    <%= comments_tree_for @comments %>
</div>

_comment.html.erb

<div  id="comment-cont_<%= comment.id %>" class="well">
  <h2><%= comment.title %></h2>
  <p class="text-muted"><%= comment.root? ? "Started by" : "Replied by" %> <strong>Alex Petrov </strong> on
    <%= l(comment.created_at, format: '%B, %d %Y %H:%M:%S') %></p>

  <% from_reply_form ||= nil %>
    <% unless from_reply_form %>
      <% if comment.leaf? %>
        <small class="text-muted">There are no replies yet - be the first one to reply!</small>
      <% end %>
    <p><div id="reply-comment_<%= comment.id%>"><%= link_to 'reply', new_comment_path(comment.id), remote: true %></p></div>
  <% end %>

</div>

0 个答案:

没有答案