有一个推荐的解决方案,它似乎工作。问题出在我的where子句中,我不确定有什么问题。 作为参考,这里是解决方案(S):在rails上的限制范围 - jquery-autocomplete(rails3-jquery-autocomplete)gem - where子句问题
我试图内的,属于CURRENT_USER的家谱成员的成员范围用户(分支机构)的用户的我节点控制器。这通常使用此代码(current_user.family_tree.memberships)完成。
注意我已经成功地将此设为自动完成,显示所有用户(User.all):
在我的路线:
resources :nodes do
get :autocomplete_user_first_name, :on => :collection
end
在我的节点控制器我有以下代码:
autocomplete :user, :first_name, :extra_data => [:last_name, :email],
display_value: :full_name
在我看来,我有以下形式:
<%= form_for node do |f| %>
<%= f.label :user_tags %>
<%= f.autocomplete_field :user_tags, autocomplete_user_first_name_nodes_path, 'data-auto-focus' => true, value: nil %>
<%= f.submit %>
<% end %>
当我尝试推荐的解决方案添加到我的节点控制器:
def get_autocomplete_items(parameters)
items = super(parameters)
items = items.where(:user_id => current_user.family_tree.memberships)
end
我得到这个消息: NoMethodError - super: no superclass method "get_autocomplete_items" for #<NodesController:0x007fc516692278>:
所以,我发现这篇文章https://stackoverflow.com/a/18717327/4379077并将其更改为
def get_autocomplete_items(parameters)
items = active_record_get_autocomplete_items(parameters)
items = items.where(:user_id => current_user.family_tree.memberships)
end
它的工作原理,但我得到以下错误 PG::UndefinedColumn: ERROR: column users.user_id does not exist
,所以我改变了where子句这:id => current_user.family_tree.memberships
,我得到这样的结果
User Load (0.9ms) SELECT users.id, users.first_name, "users"."last_name",
"users"."email"
FROM "users" WHERE (LOWER(users.first_name) ILIKE 'mi%')
AND "users"."id" IN (SELECT "memberships"."id" FROM "memberships"
WHERE "memberships"."family_tree_id" = $1)
ORDER BY LOWER(users.first_name) ASC LIMIT 10 [["family_tree_id", 1]]
的问题是,我认为我需要的会员制模式的属性membership.user_id
比较user.id
内获得的集合。我在where子句中做了什么错误?
我知道我不应该感谢你的意见@swards,但你保存了我的理智。谢谢! – mike0416
@swank,我将如何添加到此where子句其中:full_name不包含在node.user_tag_list集合中? – mike0416
尝试编辑这个'autocomplete:user,:first_name,:extra_data => [:last_name,:email],display_value :: full_name'来查看是否可以修复它。像这样配置显示值将显示全名。更多在这里我想:https://github.com/crowdint/rails3-jquery-autocomplete – Swards