简体   繁体   English

基于Ajax的micropost的评论(Ruby on Rails)

[英]Ajax based micropost's comments (Ruby on Rails)

I have ajax based micropost's comments on the user page. 我在用户页面上有基于Ajax的micropost的评论。 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. 然后,如果我按“ F5”刷新页面,则所有内容都就位了-新评论位于正确的微博中。 Thanks in advance. 提前致谢。

comment.rb comment.rb

class Comment < ActiveRecord::Base
  attr_accessible :comment_content
  belongs_to :user
  belongs_to :micropost
end

comments_controller.rb 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 _micropost.html.erb

<tr>
  <td class="micropost">
    <span class="content"><%= wrap(micropost.content) %></span>
    <span class="timestamp">
    Posted <%= time_ago_in_words(micropost.created_at) %> ago.
    </span>
    <%= render 'shared/comment_form', micropost: micropost %>
   <div id="comments">
     <%= render micropost.comments %>
   </div>
  </td>
</tr>

_comment_form.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" %>
  <button class="btn" type="submit">
    Comment
  </button>
<% end %>

_comment.html.erb _comment.html.erb

<span style="width: 100%; background:#dff0d8"><%= wrap(comment.comment_content) %></span>
<span class="timestamp">
 Posted by <%= comment.user.name %> <%= time_ago_in_words(comment.created_at) %> ago.
</span>

create.js.erb create.js.erb

$('#comments').html("<%= escape_javascript(render(:partial => @micropost.comments)) %>");

Maybe you can change 也许你可以改变

@comment = Comment.new(params[:comment])
@comment.micropost = @micropost

to

@comment = @micropost.comments.build(params[:comment])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Micropost在用户页面上的评论(Ruby on Rails) - Micropost's comments on users page (Ruby on Rails) 基于AJAX的评论不会发布正确的微博(Ruby on Rails) - AJAX based comments don't post under correct micropost (Ruby on Rails) 在Rails教程中删除ruby中的micropost - deleting micropost in ruby on rails tutorial 如何从Hartl的Ruby on Rails教程中扩展微帖子模型? - How can I expand the micropost model from Hartl's Ruby on Rails tutorial? 在 Hartl 的 ruby-on-rails 教程的第 11 章中删除 Micropost 时出现“没有路线匹配”错误 - 完全被难住了 - 'No route matches' Error on Delete of Micropost in Chapter 11 of Hartl's ruby-on-rails tutorial - completely stumped Ruby on Rails实现了Ajax Post和Comments - Ruby on Rails implement Ajax Post and Comments Ruby on Rails 教程 (Michael Hartl) 第 2 章练习 2.3.3.1 “编辑用户显示页面以显示用户第一个微博的内容。” - Ruby on Rails Tutorial (Michael Hartl) Chapter 2 Exercise 2.3.3.1 “Edit the user show page to display the content of the user’s first micropost.” 在RAILS中使用AJAX销毁微信时,如何重新加载当前页面 - How to reload current page when destroy a micropost with AJAX in RAILS Ruby on Rails中nil的未定义方法`save&#39;:@ micropost.save的NilClass - Undefined method `save' for nil:NilClass for @micropost.save in Ruby on Rails Ruby on Rails-Hartl教程-Micropost始终检测为空白,但不是 - Ruby on rails - Hartl tutorial - Micropost always detected as blank but they are NOT
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM