【发布时间】:2015-01-02 01:53:04
【问题描述】:
我有一个视图,它有一个使用 Ajax 创建新帖子的表单,它还呈现所有帖子并将新添加的帖子添加到它们。问题是当我发布第一个帖子时,除非我刷新,否则页面不会显示它,然后如果我刷新它会显示并且当我添加更多帖子时,Ajax 工作正常。
这是index.html.erb的视图:
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<%= link_to 'Edit my account', edit_user_registration_path %>
<%= form_tag search_posts_path, method: :get do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", name: nil %>
<% end %>
<b> Study requests </b>
<%= form_for(@post, remote: true) do |f| %>
<%=f.label :Course_name %>
<%=f.select :course_name, options_for_select(course_names) %><br/>
<%=f.label :Course_number %>
<%=f.select :course_number, options_for_select(course_numbers) %> <br/>
<%=f.submit %>
<% end %>
<%= render @posts %>
部分是_post.html.erb:
div id="post">
<%= post.user_name%>
</div>
控制器:
def index
@posts = Post.all.order('id DESC')
@post = Post.new
end
def create
@post = current_user.posts.build(post_params)
@post.save
respond_to do |format|
format.html { redirect_to @post, notice: "Study request successfully added" }
format.js {}
format.json { render json: @post, status: :created, location: @post }
end
end
最后是我的create.js.erb:
$("<%= escape_javascript(render @post) %>").prependTo("#post");
【问题讨论】:
-
您查看过您通过 ajax 发送的请求/响应吗?响应是什么样的?
-
Alex,我没有,在哪里可以找到这些?
-
哦,我明白你的意思了,我去看看。
-
取决于您使用的浏览器。通常您必须打开开发者工具(Chrome 和 Firefox 中的 F12 按钮)。然后选择网络,然后按 XHR 过滤请求并找到您的请求。
-
尝试调试你的js,它应该向你的页面添加帖子。我的意思是您可以在提交表单时收听成功、错误事件。尝试在其中放置一些代码以了解它是否正在执行。尝试手动模拟表单提交以确保提交工作正常。最后尝试从您的 create.js.erb 文件中执行代码以确保它有效。
标签: javascript ruby-on-rails ajax