ruby-on-rails – RoR实时搜索(text_field_with_auto_complete)提交

我有一个“电影”和一个“演员”表和“演员”作为连接模型.更具体的“演员”有movie_id,actor_id和rolename.

我希望在“电影”表单中添加实时搜索以搜索演员和“角色名称”text_field并将其保存到“演员”.

我不知道text_field_with_auto_complete是否是正确的选择,但我不想使用太多的
javascript,因为我不熟悉它.

我一直在网上搜索找到类似的东西没有任何结果.

我已经设法让它与“@ actors.each do”合作,但它列出了很长的列表. 最佳答案 它不是一个插件,但是有一点点jQuery魔法,你可以使用
http://github.com/chadisfaction/jQuery-Tokenizing-Autocomplete-Plugin.这个好处是因为它在它的实现中是纯JS,你可以在Rails中自己创建AJAX调用并只显示你想要的.如果你想让它更像Facebook,它甚至允许你在下拉列表中添加一个样式表.在你的控制器中,添加一个函数,以便AJAX调用将返回JSON中的行列表:

  def taglist
    tags = []
    sql = "SELECT id,name ... LIMIT 15" # Enter SQL here to produce a possible result set
    result = ActiveRecord::Base.connection.execute(sql)
    # Iterate over the hash values and push them into an array
    result.each { |field| tags.push( {"id" => field[0], "name" => field[1]} ) }
    result.free
    render :json => tags, :layout => false
  end

在视图中,添加以下代码:

<%= javascript_include_tag 'jquery.tokeninput' %>
<%= stylesheet_link_tag 'token-input-facebook' %>
<script type="text/javascript">
jQuery(document).ready(function () {
  jQuery("#actors_role").tokenInput("/actors/rolesearch", {
        allowNewValues: false,
        canCreate: false,
        hintText: "Enter the actor's name or role they played",
  });
});
</script>
点赞