jco*_*fey 4 javascript jquery events ruby-on-rails
我正在考虑实施类似下面的内容并且想知道a)如果由于某种原因我可能是一个非常糟糕的想法我没有想到,并且b)如果没有 - 是否有一个现有的宝石来做它.
基本上,我希望能够从我的rails控制器排队javascript事件,以便在下一次渲染时,所有排队的事件都将被触发并从队列中删除.有点像闪存机制,但对于事件而言.例如:
在我的控制器中:
def create
if resource.create
add_event('resourceCreated', :id => resource.id)
end
end
Run Code Online (Sandbox Code Playgroud)
在我的应用程序布局中,例如:
%javascript
- @events.each do |e|
$(document).trigger(#{e.event_name}, #{e.event_data})
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
编辑:这将是有用的,例如,当创建项目时,服务器可以重定向到所述项目的编辑表单,或者可以重定向到相关控制器的索引操作.这些页面不知道刚刚创建了一个项目.但是,如果项目是成功创建的话,或者我想要关闭一个对话框窗口,但如果没有,则将其保持打开状态,或者我可能需要知道的任何其他可能的原因.显然不仅仅与创造有关,这只是我用来说明问题的例子
编辑:赏金归于任何以令人信服的方式说服我,这是一个好/坏的想法或提供更好的选择
我看到你想要做什么,但你需要小心保持分开.
在这种情况下我要做的是创建一个哈希,然后#to_json在你的视图中.让我们说你的行动的底部
调节器
@events = [
{ :type => "item_created", :message => "Woohoo! Item was created"}
]
Run Code Online (Sandbox Code Playgroud)
index.html.erb
<div>Your usual stuff goes here</div>
<script type="text/javascript" charset="utf-8">
var events = <%= raw @events.to_json %> // You must make sure it's properly sanitised
</script>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$.ready(function() {
events.each(function () {
// ... Do what you need to with this
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |