Rails 5,简单的javascript与表单提交

我希望有人可以帮助我。 在这几个小时,但似乎无法弄清楚为什么我的Javascript不能在我的简单表单上工作。 我只是试图使用ajax调用显示注释。 我在我的application.js文件中有gem’jquery-rails’,并且需要jquery和jquery_ujs。 这是我到目前为止的代码:

我有一个有很多评论的Joy模型。

 <ul id="comments-">  
  • true}) do |f| %> 'form-control', :required=>'true' %> $(document).ready(function() { $('[data-js-comments-]').on("ajax:success", function(event, data, status, xhr){ $('#comments-').append(xhr.responseText); }); });

    在我的评论控制器中,在我的“创建”操作中,我有:

     if @comment.save render partial: "comment", locals: {comment: @comment} end 

    在我的评论视图中,我创建了一个名为_comment.html.erb的部分:

     
  • 所以,现在当我输入评论并点击“发表评论”时,它会正确保存我的评论,但它不会将评论加载到列表中。 此外,表单也不刷新。 文本保留在文本框中。 不仅在我刷新页面之后,当我的评论显示在列表中时。 任何人对我错过或做错了什么都有任何想法?

    我们非常感谢您的帮助。

    form_with它是一个远程表单,你不需要那个块 。 只需使用create.js.erb然后使用jquery附加新注释。

    如果要检查消息是否已成功创建,可以在控制器中添加@status值。

     //comments_controller.rb def create ... if @comment.save @status = "success" else @status = "failed" end ... end //create.js.erb - for example $("#yourCommentList").append('<%= j( render partial: 'comments/comment', locals: @comment ) %>'); <% if @status == "success" %> $("body").append(...your notification...) ... <% else %> ... <% end %>