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
,设置为每秒左右会给出大致相同的结果)。
我正在构建一个应用程序,用户可以在其中 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
,设置为每秒左右会给出大致相同的结果)。