Rails Ajax 请求未显示在其他计算机上

Rails Ajax requests not showing up on other computers

我正在构建一个应用程序,用户可以在其中 post 某些内容,并且 post 将使用 Ajax 出现在索引页面上,因此无需刷新,它适用于用户 post 访问了 post,但浏览该网站的其他用户仍然需要刷新才能看到新的 post。

这是控制器:

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");

我错过了什么?

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

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

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

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

您也可以使用 java 脚本定期自行轮询更改(一个简单的 setTimeout,设置为每秒左右会给出大致相同的结果)。