我正在尝试使用 AJAX 将 div 附加到我的 HTML 中,系统是在 Rails 中开发的。 这是 js.erb 文件的内容:
$('.posts').append("<%= j render 'post', posts: @post %>")
我真的知道我的代码正在调用这个文件,因为如果我将这些行更改为 alert.('Hello')
,警报就会显示在我的网络浏览器上。
问题是没有添加 div。
这是我的 _post.html.erb 的代码
<%= div_for @posts do %>
<p><b>Posted <%= time_ago_in_words(post.created_at) %> ago </b></p>
<p><%= post.message %></p>
<% end %>
终端或浏览器检查器中没有显示错误。
[编辑 1] 我现在在 chrome 编辑器中看到,服务器正在向客户端发送一个 ajax。内容是:
$('.posts').append("")
好像render不渲染,我的代码哪里出了问题?
[编辑2]
Controller 代码如下。调用 ajax 的方法是创建。 我不知道这是否更容易看到,但所有这个项目也都在 github 上:
https://github.com/ricardovsilva/twitter-rubyOnRails/
class PostsController < ApplicationController
def index
@posts = Post.order('created_at desc')
#respond_to :html
end
def create
@post = Post.create(:message => params[:message])
respond_to do |format|
if @post.save
format.html { redirect_to posts_path }
format.js
else
flash[:notice] = "Message failed to save."
format.html { redirect_to posts_path }
end
end
end
end
HTML 是:
index.html.erb
<%= render partial: "message_form" %>
<div id="posts">
<%= render partial: @posts %>
</div>
_message_form.html.erb
<%= 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 %>
_post.html.erb(这是我要呈现并发送到客户端的那个)
<%= div_for @posts do %>
<p><b>Posted <%= time_ago_in_words(post.created_at) %> ago </b></p>
<p><%= post.message %></p>
<% end %>
layouts/application.html.erb(这里是我尝试通过 ajax 添加呈现的 div 的地方)
<!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>
最佳答案
$('#posts').append("<%= j render 'post', post: @post %>")
是您的问题的解决方案。另外 _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 %>
关于javascript - 带有 Rails 的 Ajax,附加 div 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794432/