【问题标题】:articles users comments and ajax in rails文章用户评论和rails中的ajax
【发布时间】:2014-03-07 15:29:09
【问题描述】:

我已经成功地使用这些表构建了一个应用程序 (RAILS 4):userscommentsarticles,并且我成功了...问题是我正在通过 ajax 创建 cmets,所以当我创建第一个评论时,它会创建,但是当我创建另一个评论时,它会显示带有新评论和第一条评论的第一条评论,使所有评论成为三个等等,即它复制所有以前的 cmets...但是当页面是重新加载它会显示创建的实际评论数量....可能是它的部分或我的代码...

ceate.js.erb

$('#chat').append("<%= j render(@article.comments)%>");
$("#new_comment")[0].reset();

我的文章展示页面是这样的

<h1><%= @article.user.username %></h1>
<%= simple_format @article.content %>
<h2>Comments</h2>
<div id="chat">
  <%= render @article.comments %>
</div>
<h3>New Comment</h3>
<%= render 'comments/form' %>

因此,我的创建评论操作是:

def create
    @article = Article.find(params[:article_id])
    @comment = @article.comments.build(comment_params)
    @comment.user = current_user
    if @comment.save
      respond_to do |format|
        format.js {}
      end
    end
 end

我的形式是这样的

<%= form_for([@article, @article.comments.build],:remote => true) do |f| %>
  <div class="field">
    <%= f.text_area :content, rows: 8, cols: 30 %>
  </div>
  <div class="actions">
    <%= submit_tag 'Submit', :disable_with => 'commenting....', :class => 'submit' %>

  </div>
<% end %>


用户模型

  has_many :comments
  has_many :articles

cmets 模型

  belongs_to :user
  belongs_to :article

文章模型 has_many :cmets

  belongs_to :user
  validates :user_id, :presence => true
  has_many :users, ->  {uniq}, through: :comments

如何让这个停止复制

【问题讨论】:

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


    【解决方案1】:

    create.js.erb

    $('#chat').append("<%= j render(@article.comments)%>");
    

    应该是:

    $('#chat').html("<%= j render(@article.comments)%>");
    

    否则,您在创建每条评论时附加所有 cmets。

    【讨论】:

    • 该死的,被秒杀;-)
    【解决方案2】:

    我认为您的问题只是您将完整的 cmets 列表附加到评论部分,当您应该 a) 用 cmets 列表替换评论部分或 b) 只是将新评论添加到顶部/底部。

    b) 效率更高,但除非效率成为问题,否则我总是会重新渲染列表,它更简单、更可靠。

    尝试将 create.js 中的第一行更改为

    $('#chat').html("<%= j render(@article.comments)%>");
    

    【讨论】:

      猜你喜欢
      • 2018-09-12
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2013-06-04
      • 2021-12-03
      相关资源
      最近更新 更多