Ruby on rails 如何使用ajax重新加载部分注释?

Ruby on rails 如何使用ajax重新加载部分注释?,ruby-on-rails,ajax,Ruby On Rails,Ajax,因此,我是Rails的初学者,在创建注释时尝试重新加载部分。 我正在创建一个论坛,在那里我可以发表帖子和评论 情况如下: /views/posts/show.html.erb 我想重新加载我的评论部分后。 我试图理解stackoverflow和教程上的许多帖子,但我仍然不知道如何做到这一点 如果有人能帮我度过难关,那就太好了。你想触发重新加载的动作是什么?您正在显示表单、链接,这不太清楚 基本上,您需要在表单/链接上使用remote:true,然后为该操作添加一个扩展名为.js.erb的视图,并

因此,我是Rails的初学者,在创建注释时尝试重新加载部分。 我正在创建一个论坛,在那里我可以发表帖子和评论

情况如下: /views/posts/show.html.erb

我想重新加载我的评论部分后。 我试图理解stackoverflow和教程上的许多帖子,但我仍然不知道如何做到这一点


如果有人能帮我度过难关,那就太好了。

你想触发重新加载的动作是什么?您正在显示表单、链接,这不太清楚

基本上,您需要在表单/链接上使用remote:true,然后为该操作添加一个扩展名为.js.erb的视图,并在该视图上使用javascript更改特定元素的内容

比如:

首先,您需要提供一些独特的方法来使用JavaCScript访问所需的元素:

<% @posts.each do |post| %>
  <div id="post_<%= post.id -%>">
    <%= post.title.capitalize %>
    <%= post.content %>

    <div class='comments'>
      <%= render 'comments/comment', post: post, comments: post.comments %>
    </div>

    <%= form_tag(category_forum_post_comments_path(@category, @forum, post), :method => :post, class: 'form newtopic') do  %>
      <%= text_field_tag :content, nil, placeholder: 'Commenter', class: 'form-control' %>
      <%= submit_tag "Envoyer", class: "btn btn-primary" %>
    <% end %>
  </div>
<% end %>

<%= form_tag(category_forum_posts_path(@category, @forum), :method => :post, class: 'form newtopic') do  %>
  <%= text_field_tag :title, nil, placeholder: 'Titre de votre Post', class: 'form-control' %>
  <%= text_area_tag :content, nil, placeholder: 'Description', id: 'desc', class: 'form-control' %>
  <%= submit_tag "Envoyer", class: "btn btn-primary" %>
<% end %>
#your_view.js.erb
post = document.getElementById('post_<%= @post.id -%>');
comments = post.querySelector('comments');
最后,同样在视图中,呈现部分和替换注释的innerHTML

comments.innerHTML = '<%= j(render partial: "comments/comment", post: @post, comments: @post.comments) -%>';

只是一个建议,使用复数形式的注释作为部分的名称,因为您正在呈现所有注释,而不仅仅是一个注释。

谢谢arieljuod。我想在发表评论时重新加载我的部分内容。我完全不知道如何编写js.erb文件来实现这一点
#your_view.js.erb
post = document.getElementById('post_<%= @post.id -%>');
comments = post.querySelector('comments');
comments.innerHTML = '<%= j(render partial: "comments/comment", post: @post, comments: @post.comments) -%>';