Ami*_*Pal 10 ruby ajax model-view-controller ruby-on-rails ruby-on-rails-4
我们来看一个场景:
counter 10 seconds
Run Code Online (Sandbox Code Playgroud)
show.html.erb页面show.html.erb从database使用中获取值<%= @post.value %>.10 seconds.10 seconds我都想改变@post.value使用utility类.@post.valuein数据库.show.html.erb自动刷新并<%= @post.value %>显示更新的值如果我必须简化代码中的问题,那么它会喜欢这样:
<%= @post.value %>
<%= @post.name %>
Run Code Online (Sandbox Code Playgroud)
def show
@post = Post.find(params[:id])
end
def update
.... #It's empty right now
end
def fetching_value_from_PostUpdate(current_value)
.. # Now I need to update the value in database
end
Run Code Online (Sandbox Code Playgroud)
我想post.value在这个类中编写的方法的基础上更新.伪代码:
class PostUpdate
@@instance_variable
def initialize(post_value)
@@instance_variable = Marshal.load(Marshal.dump(post_value))
end
#Method required to calculate the value
def update_data_in_database
...
return data
end
Run Code Online (Sandbox Code Playgroud)
问题
background jobs在rails中使用.show方法中进行哪些更改,以便在每个间隔页面之后自动刷新并传递更新的值@post.value?谢谢你的帮助!
小智 1
我想说最简单的方法是使用ActionController::Live。使用它,您将能够将 SSE(服务器发送事件)发送到您的客户端,同时让 js 脚本捕获并更新您的<%= @post.value %>. 这是一个非常好的使用手册。
尽管如此,从我的角度来看,实现你想做的事情的最合适的方法是使用像Faye这样的东西。它是一个发布/订阅消息系统,允许您在新数据出现时立即用新数据更新您的客户端,例如,您可以after_save在模型中设置并向所有订阅的客户端发布更新。当然还有一个 gem 也叫faye来包装它的用法。
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |