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方法的答案,但这似乎打破了自动完成
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:alias_method_chain仍然使用?
由于上面的答案,我解决了类似的问题.
我的自动完成功能也适用于用户模型,但我需要将结果限制在用户的机构(机构有很多:用户).我的控制器创建一个在视图中访问的@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)
我的自动完成列表现在仅限于为特定机构工作的用户.
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)
| 归档时间: |
|
| 查看次数: |
4849 次 |
| 最近记录: |