Params第二次没有通过控制器在Rails中查看

时间:2017-12-14 08:06:40

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

我正在建设"评论" " 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>&nbsp;&nbsp;
  <%= 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第二次是零。请帮助我。

0 个答案:

没有答案