在Rails中,我的Dish页面上有一个表单,其中有一个名为Side Dishes的多选Chosen字段。
如果用户从另一个浏览器窗口添加了另一个Side Dish,我想让我的Side Dishes Chosen字段选项自动更新(无需重新加载页面)。
我查看了Chosen网站上的 Updating Chosen Dynamically ,但我不知道这是我正在寻找的和/或我是否正确理解它。
目前,我的dishes.js.coffee
看起来像这样:
jQuery ->
$(".chzn-side-dish").chosen()
$(".chzn-side-dish").trigger "liszt:updated"
但很明显,这并没有成功。我的理解是.trigger
将定期刷新Side Dish列表并从Side Dish表中获取任何新添加(或删除)。
Dish页面上的表格遵循以下惯例:
= form_for @dish, :html => { :class => "form-horizontal" } do |f|
...
%fieldset
.control-group
=f.label :side_dish_ids, "Side Dish(es)", :class => 'control-label'
.controls
=f.collection_select :side_dish_ids, SideDish.order(:name), :id, :name, {}, {multiple: true, :class => 'chzn-side-dish'}
PS - 我查看了other SO个问题,但无法完成所有工作。同样,我不确定我是否正确理解.trigger...
的目的。
答案 0 :(得分:1)
您需要手动处理,没有简单的方法。您可以执行轮询以检查是否有更改,然后重新创建列表,或者您可以使用websockets来避免需要轮询。如果采用这种方法,有一个服务http://www.pusherapp.com可以帮助使用websockets。
从可用性的角度来看,我会非常小心,你不想在用户实际使用它时重新加载列表,或者如果他们已经选择了某些东西。