Ruby on rails Rails评论Ajax

Ruby on rails Rails评论Ajax,ruby-on-rails,ajax,comments,Ruby On Rails,Ajax,Comments,我整天都在网上搜寻这个问题的解决方案。很多关于堆栈溢出的人都遇到过同样的问题,我已经尝试了他们的所有解决方案,但它似乎对我不起作用,所以我想在这里尝试一下。我只是想让我的页面在发布后更新我的评论而不刷新。问题似乎出在我的create.js.erb文件中,因为它似乎根本没有注册。这是我到目前为止得到的 控制员: class CommentsController < ApplicationController def create @content = params[:co

我整天都在网上搜寻这个问题的解决方案。很多关于堆栈溢出的人都遇到过同样的问题,我已经尝试了他们的所有解决方案,但它似乎对我不起作用,所以我想在这里尝试一下。我只是想让我的页面在发布后更新我的评论而不刷新。问题似乎出在我的create.js.erb文件中,因为它似乎根本没有注册。这是我到目前为止得到的

控制员:

class CommentsController < ApplicationController

    def create

    @content = params[:content]

    @comment = Comment.create(:video_id => params[:video_id], :content => params[:content])

    @video = Video.find(params[:video_id])

    respond_to do |format| 

    format.html {redirect_to "/videos/#{@video.id}", flash:{success_comment: "created!"}}

    format.js {}

    end

  end

end
class CommentsControllerparams[:video\u id],:content=>params[:content])
@video=video.find(参数[:video\u id])
回应做什么|格式|
format.html{redirect_to”/videos/{@video.id},flash:{success_comment:“created!”}
format.js{}
结束
结束
结束
创建注释表单:

  <%= form_tag "/videos/#{@video.id}/comments", :method => "post", :remote => true do %>
    <%=label_tag :comment, nil %>

    <%=text_area_tag :content, nil, class: "commentinput" %>

    <%=submit_tag "Comment"%>

  <% end %>
“post”,:remote=>true do%>
app/views/comments/create.js.erb:

$('.comments').append('<%= escape_javascript(render :partial => @comment) %>');

$('.commentinput').val('')
$('.comments')。追加('@comment)%>);
$('.commentinput').val('')

有人能告诉我我在这里错过了什么吗???提前感谢。

Rails说,当使用form_标签上的remote:true时,您将需要这段适合您的元素/应用程序的代码片段。你试过了吗

$ ->
  $("a[data-remote]").on "ajax:success", (e, data, status, xhr) ->
    alert "The article was deleted."

Rails服务器终端窗口或日志文件中是否有任何错误消息

调整create.js.erb文件以进行测试:

$('.comments').append('<%= escape_javascript(render :text => 'the create.js.erb file seems to work') %>');

$('.comments')。追加('');

为什么在create.js.erb中渲染一个partial,而将一个变量传递给参数?您应该需要呈现一个真正的部分而不是一个变量,不是吗?我在create.js erb文件中抛出了一个console.log来测试它的功能,但没有显示任何内容。我也没有评论。你在浏览器开发者工具中得到了什么回应?布局的HTML源是否在AJAX调用中发送回浏览器,或者是否存在任何JS错误?PS如果没有呈现单个注释的部分,您将如何呈现单个注释?是的,我在ajax调用中获得了整个HTML源代码。没有JS错误,除非我将respond_添加到JS{:layout=>false},否则我会从jquery文件中得到一个JS错误。至于发表一条评论,我只是按照我在网上找到的一个例子,并不完全明白这是怎么回事,但我已经用尽了所有其他的选择,并愿意在那一点上尝试任何东西,哈哈。一个狡猾的解决办法可能是把
format.js{}
放在
format.html{}
前面的一行,请确认您正在运行的Rails版本,好吧,您需要将jquery选择器更改为带有该数据属性的元素:$(“form[data remote]”;在你的情况下就是这样。另外,不是肯定的,但可能是遥远的:提交标签上的是真的吗?
$('.comments').append('<%= escape_javascript(render :partial => 'comment') %>');
$('.comments').append('<%= escape_javascript(render @comment) %>');