Rails Ajax请求不会出现在其他计算机上

时间:2015-01-03 22:37:19

标签: ruby-on-rails ajax

我正在构建一个用户可以发布内容的应用程序,并且帖子将使用Ajax显示在索引页面上,因此无需刷新,它适用于发布帖子的用户,但浏览网站的其他用户仍然需要刷新以查看新帖子。

这是控制器:

def index
    @posts = Post.all.order('id DESC')
    @post = Post.new
end

d

ef 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

这是javascript

$("<%= escape_javascript(render @post) %>").prependTo("#container");

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您需要在页面中实施长轮询或使用网络套接字。

其他浏览器没有神奇地更新,因为这些页面已经加载并且不会获得任何进一步的请求。 (服务器,服务页面和加载这些页面的浏览器之间存在差异。)

如果您在页面中实施长轮询或网络套接字,则需要浏览器持续监听服务器中的更改或传入数据。

这样做,Faye(github version of faye)似乎在过去对我有用。 (这需要你设置除rails应用程序之外的另一个服务器,它将侦听来自rails应用程序的更改调用并将其推送到侦听客户端)(如果你愿意,它还集成了长轮询)。

此外,您可以使用java脚本定期轮询更改(简单的setTimeout,设置为每秒左右会产生大致相同的结果)。