【问题标题】:Rails ajax first request not showing up unless I refresh the page除非我刷新页面,否则不会显示 Rails ajax 第一个请求
【发布时间】: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


【解决方案1】:

我明白了,我只需要在我的部分渲染周围添加一个新的 div,如下所示:

<ul id="container">
<%= render @posts %>
</ul>

并更改 create.js 以附加到此 div

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    相关资源
    最近更新 更多