Javascript 带有Rails的Ajax,附加div不起作用

Javascript 带有Rails的Ajax,附加div不起作用,javascript,jquery,html,ruby-on-rails,ajax,Javascript,Jquery,Html,Ruby On Rails,Ajax,我试图使用AJAX将div附加到HTML中,该系统是在rails中开发的。 这是js.erb文件的内容: $('.posts').append("<%= j render 'post', posts: @post %>") 终端或浏览器检查器中不显示任何错误 [Edit 1]我现在在chrome编辑器中看到,服务器正在向客户端发布一个ajax。内容是: $('.posts').append("") 看起来渲染不是渲染,我的代码怎么了 [编辑二] 控制器代码如下所示。调用aj

我试图使用AJAX将div附加到HTML中,该系统是在rails中开发的。 这是js.erb文件的内容:

$('.posts').append("<%= j render 'post', posts: @post %>")
终端或浏览器检查器中不显示任何错误

[Edit 1]我现在在chrome编辑器中看到,服务器正在向客户端发布一个ajax。内容是:

   $('.posts').append("")
看起来渲染不是渲染,我的代码怎么了

[编辑二]

控制器代码如下所示。调用ajax的方法是create。 我不知道这是否更容易看到,但所有这些项目也都在github上:

class PostsControllerparams[:message])
回应待办事项|格式|
如果@post.save
format.html{redirect_to posts_path}
format.js
其他的
flash[:notice]=“消息保存失败。”
format.html{redirect_to posts_path}
结束
结束
结束
结束
HTML的内容包括:

index.html.erb

<%= render partial: "message_form" %>
<div id="posts">
    <%= render partial: @posts %>
</div>      
<%= form_tag("/posts", remote: true) do %>
    <%= label_tag(:message, "What are you doing?")%><br>
    <%= text_field_tag(:message, nil, size: "44x6") %><br>
    <%= submit_tag("Update") %><br>
<% end %>

\u message\u form.html.erb

<%= render partial: "message_form" %>
<div id="posts">
    <%= render partial: @posts %>
</div>      
<%= form_tag("/posts", remote: true) do %>
    <%= label_tag(:message, "What are you doing?")%><br>
    <%= text_field_tag(:message, nil, size: "44x6") %><br>
    <%= submit_tag("Update") %><br>
<% end %>




\u post.html.erb(这是我试图渲染并发送到客户端的文件)


前贴

layouts/application.html.erb(这里是我试图通过ajax添加渲染div的地方)


啁啾
正确%>
正确%>

在您的情况下,您应该使用方法呈现
post
模板。

$(“#posts”)。append(“”
是您问题的解决方案。此外_post.html.erb必须:

 <%= div_for post do %>
   <p><b>Posted <%= time_ago_in_words(post.created_at) %> ago </b></p>
   <p><%= post.message %></p>
 <% end %>

前贴


尝试将渲染“post”更改为渲染部分:“post”未更改。我可以在终端中看到这一点(有或没有将部分字转换成代码)
Rendered posts/_post.html.erb(0.0ms)Rendered posts/create.js.erb(4.0ms)
不应该是
render'post',集合:@posts
不起作用。我看到了chrome的网络标签,服务器在回答我的ajax请求中的代码:
$('.posts')。append(“”
@RicardoSilva)你能把你的控制器代码和html发布到你想要这个div附加到的地方吗?我正在尝试使用它,但我认为语法是错误的,因为它给了我错误<代码>$('.posts')。追加(“”),你能告诉我怎么做吗?这解决了我的问题,但我不明白
是如何工作的,你能解释一下吗?当然。为帮助者解释
div\u。那么在这种情况下,
post
是什么呢?在这里
我们将_post.html.erb部分呈现并发送到@post对象,该对象位于局部变量
post
下。
<!DOCTYPE html>
<html>
<head>
  <title>Twitter</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<div id="content"> 
    <%= yield %>
</div>

</body>
</html>
 <%= div_for post do %>
   <p><b>Posted <%= time_ago_in_words(post.created_at) %> ago </b></p>
   <p><%= post.message %></p>
 <% end %>