Javascript 如何在rails视图中使用AJAX

Javascript 如何在rails视图中使用AJAX,javascript,ruby-on-rails,view,Javascript,Ruby On Rails,View,我有一个循环的文章,每个文章都有一条评论 目标是使用JS动态/异步地呈现一条注释 我的问题是: 如何调用/激活我在下面定义的逻辑 #welcome/index.haml - @articles.each do |article| = article.title - article.comments.each do |comment| %comment-content{ :id => "comment-#{comment.id}" } #welcome/comment.js

我有一个循环的
文章
,每个文章都有一条
评论

目标是使用JS动态/异步地呈现一条
注释

我的问题是:

如何调用/激活我在下面定义的逻辑

#welcome/index.haml
- @articles.each do |article|
  = article.title
  - article.comments.each do |comment|
    %comment-content{ :id => "comment-#{comment.id}" }

#welcome/comment.js.erb
// var
var comment = "#comment-<%= params[:comment_id] %>" 

// render
$(comment).html("<%=j render 'comment_content' %>")

#welcome/_comment_content.haml
= comment.content
#欢迎光临/index.haml
-@articles.each do| article|
=文章标题
-article.comments.每个人都做评论|
%注释内容{:id=>“注释-{comment.id}”
#欢迎/comment.js.erb
//变量
var comment=“#comment-”
//渲染
$(注释).html(“”)
#欢迎/u comment\u content.haml
=comment.content
更新:

在试图解决这个问题时,我认为应该添加如下内容:

class WelcomeController < ApplicationController 
    def index
    end

    def comment
        respond_to do |format|
            format.js { render 'comment' } 
    end 
end
class WelcomeController
您可以使用AJAX,假设您将在
ready
page:change
上显示注释,以避免出现TurboLink问题

注意:我将使用erb,因为我觉得与haml不兼容

步骤1:定义路线 为AJAX事件创建一个路由,在本例中,我们将创建一个GET

#This route will call the action get_one_comment of your articles_controller
get 'articles/get_one_comment'
步骤2:定义控制器操作 在您的articles\u controller.rb中创建
get\u one\u comment
操作,这样当您的ajax调用该操作时,它将从您的ajax操作中检索正确的信息,您将发送文章的id,因此它将作为
params[:Article\u id]
提供,同时确保该操作与您的控制器回调兼容,有时,控制器中的操作之前的
可能会导致以下问题:

#articles_controller
def get_one_comment
  @article = Article.find params[:article_id]
  @comment = @article.comments.last
  resond_to do |format|
    format.js
  end
end
您是否注意到
respond_to
块?正如您所看到的,在您的情况下,这个控制器操作将以js.erb格式或js.haml格式响应

步骤3:修复标记 Ajax请求中的想法是循环浏览我们的文章,并将文章id发送给控制器操作,我们还需要设置某种css类或id,响应脚本将在其中放置注释

#welcome/index.html.erb
<% @articles.each do |article| %>
<div id="article-<%= article.id %>" class="article-block" data-article-id="<%= article.id %>"
<%= article.title %>
<div class="comment-section">
</div>
</div>
步骤5:使用响应脚本呈现注释。 创建一个响应脚本,在本例中,当我们在控制器操作中设置我们将以
format.js
回答时,我们需要创建一个
get\u one\u comment.js.erb
文件,该文件将包含我们的响应脚本。在这个脚本中,我们只是将注释适当地放置在页面中

#get_one_comment.js.erb
$('#article-<%= @article.id %> .comment-section').append('j render(@comment)');
#get_one_comment.js.erb
$(“#article-.comment节”).append('j render(@comment');
上面将为页面中的每个文章div呈现部分
comments/_comment.html.erb


如果它不起作用,请检查您的JavaScript控制台,我还没有测试,所以可能会有键入错误,或者rails控制台,但基本上我给了您实现它的步骤和正确方法,您可以自定义AJAX,例如在不同的事件中发送请求,如滚动、悬停、单击等。

Hi,我现在回答你,这是非常完整的,一步一步,只要抓住你!非常感谢我的朋友。请考虑选择我的答案作为接受,我花了一些时间在它…嘿,请看这个问题。
#get_one_comment.js.erb
$('#article-<%= @article.id %> .comment-section').append('j render(@comment)');