0

我要离开 Railscasts 102。

我当前的问题是页面加载时我的搜索表单已经填充了数据。

我有一个模型、列表和该模型的 5 列:网站、网址、评论、医生和日期。在这种情况下,我只是担心网站。

我的 listings.js.coffee 是

jQuery ->
  $('#search').autocomplete
    source: $('#search').data('autocomplete-source')

而我的 index.html.erb 文件(重要部分)是

<%= form_tag '/listings', :method => :get do %>
  <%= text_field_tag :search, data: {autocomplete_source: Listing.order(:website).map(&:website)} %>
  <%= submit_tag 'Search', :class => 'echo-search-tag', :name => nil %>
<% end %>

当我加载页面时,搜索表单已经填充了

{:data=>{:autocomplete_source=>["Doctors4US", "如何变得更好", "Rafael's Epic Doctor Site", "Testing Admin", "WebMD"]}}

显然,情况不应该如此。JS 控制台给我一个错误:

未捕获的类型错误:对象# 的属性“源”不是函数

我看到另一个关于此的 Stack Overflow 帖子,我尝试了该解决方案,但没有任何区别。

注意:当我尝试测试 listings.js.coffee 中的源数据时,例如 ['foo', 'fore', 'food'],自动完成功能正常工作。

另请注意,除了自动完成之外,搜索功能正常工作。

任何输入表示赞赏:)

4

1 回答 1

1

好的,问题是 text_field_tag 需要 2 个参数,这就是搜索表单预填充数据的原因。

所以我只是为第二个参数添加了 nil

<%= text_field_tag :search, nil, data: {autocomplete_source: Listing.order(:website).map(&:website)} %>

瞧!在职的。

现在试图弄清楚如何向Listing.order 和.map 添加多个列(即,不仅有:website,还有:comments、:doctor 和:url)。输入赞赏!

于 2012-10-11T16:36:57.797 回答