我正在建设"评论" " post"的模型。单个配置文件将有两个选项卡。每个标签将有十个帖子。所以,我使用UUID(唯一ID)调用帖子。第一次发布评论并显示评论的索引页面。但是下次没有刷新页面时,评论会通过ajax发布,但索引页面不会显示。
帖子/索引中的我的评论部分是
<% @posts.each do |p| %>
<% a = SecureRandom.uuid %>
<i class="fa fa-comment post-comment coms" data-a="<%= a %>"
style="cursor:pointer;" data-postid="<%= p.id %>" data-class="<%=
p.class.to_s %>"></i>
<%= p.comments.count %>
<div id="comments_post_<%= a %>"></div>
<% end %>
<script type="text/javascript">
var comments_url = "<%= comments_path %>";
$(".coms").click(function(e){
var p_a = $(this).data("a");
var c_type = $(this).data("class");
var id = $(this).data("postid");
e.stopImmediatePropagation()
$("#comments_post_"+p_a).toggle(
function(){($("#comments_post_"+p_a).load(comments_url+"?c_type="+c_type+"&id="+id+"&p_uuid="+p_a));}
);
});
在jquery中,我将UUID作为p_uuid传递给注释索引操作。
评论/控制器索引操作是
def index
@holder = params[:c_type].constantize.find(params[:id])
@c_uuid = params[:p_uuid] unless params[:p_uuid].blank?
render partial: "comments/index"
end
我将params [:p_uuid]分配给@c_uuid。
评论/索引是
<div class="row postComment"">
<div class="col-md-2 col-sm-2"><%= image_tag(current_user.image_url[:url], :class => "commentpic") rescue "" %></div>
<div class="col-md-10 col-sm-10">
<textarea id="commentText" class="annotation send-comm form-control" placeholder="Add a comment"
data-c-id="<%= @holder.id %>" data-c-type="<%= @holder.class.to_s %>" data-uuid="<%= @c_uuid %>"></textarea>
<div class="hint">Press Shift + Enter for a new Line</div>
</div>
</div>
<script>
var comments_url = "<%= comments_path %>";
function postComment(context){
var comment = $(context).val();
var c_type = $(context).data("c-type");
var c_id = $(context).data("c-id");
var uuid=$(context).data("uuid");
var commParams = {
commentable_type: c_type,
commentable_id: c_id,
body: comment
}
postData( comments_url, { comment: commParams }, function(data){
$("#comments_"+"<%= @holder.class.to_s.downcase %>_<%= @c_uuid %>").load(comments_url+"?c_type=<%= @holder.class.to_s %>&id="+"<%= @holder.id %>");
});
</script>
实际问题是,我发布了第一条评论,它的发布和索引页面都显示出来了。但是,第二次将注释保存在数据库中,但没有在索引或索引上显示,而是没有更新。
我使用console.log检查,来自评论控制器的@c_uuid
第一次传递给评论/索引,但第二次不可用。手段,@c_uuid
第二次是零。请帮助我。