0

在 Rails 中,我的 Dish 页面上有一个表单,其中有一个名为 Side Dishs 的多选选择字段

如果用户从另一个浏览器窗口添加了另一个配菜,我想让我的配菜选择字段的选项自动更新(无需重新加载页面)。

我从选择的网站上查看了动态更新选择的内容,但我不知道这是否是我正在寻找的和/或我是否正确理解它。

目前,我的dishes.js.coffee样子是这样的:

jQuery ->
  $(".chzn-side-dish").chosen()
  $(".chzn-side-dish").trigger "liszt:updated"

但显然,这并不能解决问题。我的理解是,.trigger将定期刷新配菜列表并从配菜表中获取任何新添加(或删除)。

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——我已经查看了其他 SO问题,但无法使其全部正常工作。同样,我不确定我是否理解.trigger...正确的目的。

4

1 回答 1

1

您将需要手动处理,没有简单的方法。您可以进行轮询以检查是否有更改,然后重新创建您的列表,或者您可以使用 websockets 来避免需要轮询。如果您采用这种方法,有一个服务http://www.pusherapp.com可以帮助您使用 websockets。

从可用性的角度来看,我会非常小心,您不想在用户实际使用列表时重新加载列表,或者如果他们已经选择了某些内容。

于 2012-07-18T23:34:22.790 回答