为什么Ajax.Autocompleter设置div容器的样式以显示结果:none?

时间:2009-11-16 19:35:01

标签: ajax rjs autocomplete

我的自动完成调用现在没有显示任何内容,因为我插入ul的div的样式设置为display:none。使用firebug,我可以看到结果以正确的无序列表标签返回,当我从firebug控制台编辑html并删除style =“display:none;”时,我看到自动完成结果。我为生成的自动完成标记添加了css,但这被原型1.6.1 / scriptaculous 1.8.3覆盖了。另外,我正在使用rails 1.2.2

这是我视图中的代码:

<script type="text/javascript">
  new Ajax.Autocompleter("autocomplete", "autocomplete_choices", "/campaigns/title_list", {tokens: ',', paramName: 'title'});
</script>

<input type="text" id="autocomplete" name="autocomplete_parameter"/>
   <div id="autocomplete_choices" class="autocomplete"></div> 

这里我的控制器动作和部分:

def title_list
  camp_title = params[:title]
  @titles = Campaign.find(:all, :conditions => ["title ilike ?", "%#{camp_title}%"], :select => :title).collect { |camp| camp.title }
  render :partial => "title_list"
end     

_title_list.rhtml

<ul>
  <% @titles.each do |t| %>
      <li> <%= t %> </li>
  <% end %>
</ul>

这是我在firebug中看到的:

<div style="display: none; position: absolute; left: 8px; top: 123px; width: 155px;" id="autocomplete_choices">
  <ul>
    <li class="selected"> DirecTV Defender (Best Deal Ever) </li>
    <li class=""> Defender DirecTV </li><li class=""> DirecTV Defender - Collections </li>
    <li class=""> Defender DirectTV (Gotham Direct) </li>
  </ul>
</div>

任何建议都将不胜感激。

-h

1 个答案:

答案 0 :(得分:0)

您需要进入auto_complete帮助程序(在供应商目录内)并将行items.uniq更改为items.uniq.join 原因是Ruby 1.9中的数组的to_s行为发生了变化。对我这样的工作很好。