Rails中的jQuery UI自动完成,使用ID属性更新隐藏字段

时间:2011-09-03 14:31:26

标签: ruby-on-rails-3 jquery-ui

我的形式是这样,非常简单:

<script>
    $(function() {
        var availableProducts = [
             <% @products.each do |p| %>"<%= p.id %> <%= p.title %> (<%= p.product_type.name %>)",<% end %>
             ""
        ];
        $( "#tags" ).autocomplete({
            source: availableProducts
        });
    });
</script>

这给了我一些名单,比如1 Title(Trade Paperback)。当然所有rails都需要id属性。我计划使用select:事件使用属性更新隐藏字段,但是我不太确定如何从数据源中提取id来更新隐藏字段。< / strong>我应该将数据源更改为可以拥有密钥的内容吗?喜欢JSON?我仍然不知道如何从中提取。

以上是直接html中的代码:

<script>
    $(function() {
        var availableProducts = [
              "1 Test Title (eBook)",
              "2 Another Test Title (eBook)",
              ""
        ];
        $( "#products" ).autocomplete({
            source: availableProducts
        });
    });
</script>

1 个答案:

答案 0 :(得分:2)

您的来源应该是{value:,label:}对的数组。标签将显示和自动完成,但您可以将值存储在隐藏的输入中。

以下是一个例子:

http://jsfiddle.net/vZeHr/4/

并在jquery-ui docs页面上查看此示例

http://jqueryui.com/demos/autocomplete/#custom-data

要从rails生成数组,您可以执行类似

的操作
var availableProducts = <%= @products.collect { :label => p.title, :value => p.id }.to_json ->;