Rails gem rails3-jquery-autocomplete如何按用户范围

deb*_*deb 9 ruby named-scope ruby-on-rails jquery-autocomplete ruby-on-rails-3

我正在使用Rails gem rails3-jquery-autocomplete来为帖子添加类别.

我想限制搜索只包括属于当前用户或帖子的作者的类别在结果中.

文档说我可以指定范围:

:示波器

添加了使用范围的选项.传递数组中的范围.例如:scopes => [:scope1,:scope2]

但我不确定如何在这里传递用户ID?

这似乎是一个comon场景,我错过了一些明显的东西吗?

我找到了一个建议修改get_item方法的答案,但这似乎打破了自动完成

确定rails3 jquery autocomplete插件的结果范围

deb*_*deb 17

posts_controller:

 def get_autocomplete_items(parameters)
    items = super(parameters)
    items = items.where(:user_id => current_user.id)
  end
Run Code Online (Sandbox Code Playgroud)

我首先调用原始的get_autocomplete_items方法,然后通过current_user.id过滤掉结果.

这个问题有帮助: Rails 3:a​​lias_method_chain仍然使用?


Kev*_*vin 8

由于上面的答案,我解决了类似的问题.

我的自动完成功能也适用于用户模型,但我需要将结果限制在用户的机构(机构有很多:用户).我的控制器创建一个在视图中访问的@institution实例变量.

虽然get_autocomplete_items方法无法直接访问实例变量,但我发现数据可以作为参数传递给自动完成(注意:我使用的是simple_forms gem,因此输入调用看起来与标准的rails语法略有不同).

在我看来:

<%= f.input :email,  :url => autocomplete_user_email_institutions_path(:institution_id=>@institution.id.to_s), :as => :autocomplete %>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

  autocomplete :user, :email, :extra_data => [:first_name, :last_name]

  def get_autocomplete_items(parameters)
    super(parameters).where(:institution_id => params[:institution_id])
  end
Run Code Online (Sandbox Code Playgroud)

我的自动完成列表现在仅限于为特定机构工作的用户.


Giu*_*ppe 6

deb's answer works for me. The code can be cleaned up a bit:

def get_autocomplete_items(parameters)
  super(parameters).where(:user_id => current_user.id)
end
Run Code Online (Sandbox Code Playgroud)