【问题标题】:Using jQuery Autocomplete使用 jQuery 自动完成
【发布时间】:2014-02-24 11:04:52
【问题描述】:

在我的 Rails 4 应用程序中,我在导航栏中有一个使用 jQuery 自动完成功能的搜索框。我在用户的索引操作中使用它。一切正常,除非他们从下拉列表中单击用户名,我希望它转到他们的个人资料页面。

用户控制器:

def index
  if params[:term]
    @users = User.order(:name).where("LOWER(name) like ?", "%#{params[:term]}%")
    render json: @users.map(&:name)
  end
  if params[:users_name]
    @users = User.search(params[:users_name])
  end
end

搜索栏:

<%= form_tag users_path, :method => 'get', :role => 'search', :class => "navbar-form navbar-right" do %>
  <div class="form-group has-feedback">
    <%= autocomplete_field_tag :users_name, '', users_path, :placeholder => "Search", :required => true, :class => "form-control transition" %><span class="glyphicon glyphicon-search form-control-feedback"></span>
  </div>
<% end %>

我的用户路线是基本的,只是

resources :users

用户/index.html.erb:

<div class="row">
  <div class="span12">
    <% if @users %>
      <ol class="list-inline">
        <%= render @users %>
      </ol>
    <% end %>
  </div>
</div>

_user.rb:

I have the appropriate file with what I want displayed here as well.

就像我提到的,自动完成工作正常,当我开始输入名称时,用户名将下拉。我遇到的问题是,如果他们开始输入 justin 并且“justin woodlake”是下拉列表之一,他们点击 Justin Timberlake 我希望它转到他的个人资料页面profile_page(@user)

【问题讨论】:

    标签: jquery ruby-on-rails autocomplete ruby-on-rails-4


    【解决方案1】:

    我确信实现这一点的方法很少,但一个简单的解决方案就是这样做......

    users_controller.rb

    def index
      if params[:term]
        @users = User.order(:name).where("LOWER(name) like ?", "%#{params[:term]}%")
        payload = []
        # build up data set
        @users.each do |u|
          payload.push({label: u.name, value: u.id})
        end
        render json: @users.map(&:name)
      elsif params[:users_name]
        @users = User.search(params[:users_name])
      end
    end
    

    在你的 JS 代码中

    $("#element_name").autocomplete({
      source: "/user",
      ...
      select: function (e, d) {
        // redirect to the user profile page..
        window.location = "/users/" + d.item.value;
      }
    

    【讨论】:

    • 感谢@YosepKim 的回复。自动完成结果仍然不能作为链接。但其他一切都运行良好。
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多