有一個推薦的解決方案,它似乎工作。問題出在我的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