我正在嘗試實現用戶查找其他用戶的簡單搜索表單。我一直在網上查找相當一段時間,但很多資源似乎是過時的,無論是3號軌道還是退役的寶石...rails 4簡單的搜索表單,供用戶查找對方
任何人都可以指向我最近的rails 4資源進行簡單的搜索或顯示我的骨架代碼開始?先謝謝你!
我正在嘗試實現用戶查找其他用戶的簡單搜索表單。我一直在網上查找相當一段時間,但很多資源似乎是過時的,無論是3號軌道還是退役的寶石...rails 4簡單的搜索表單,供用戶查找對方
任何人都可以指向我最近的rails 4資源進行簡單的搜索或顯示我的骨架代碼開始?先謝謝你!
https://github.com/jhund/filterrific
scope :search_query, lambda { |query|
return nil if query.blank?
terms = query.to_s.downcase.split(/\s+/)
# replace "*" with "%" for wildcard searches,
# append '%', remove duplicate '%'s
terms = terms.map { |e|
(e.gsub('*', '%') + '%').gsub(/%+/, '%')
}
# configure number of OR conditions for provision
# of interpolation arguments. Adjust this if you
# change the number of OR conditions.
num_or_conds = 2
sql = "(LOWER(foo.first_name) LIKE ? OR LOWER(foo.last_name LIKE ?)"
where(
terms.map { |term| sql }.join(' AND '), *terms.map { |e| [e] * num_or_conds }.flatten
)
}
這將是由任一first_name的或姓氏搜索用戶的一個簡單的例子。 Filterrific是相當不錯的,但如果您有多條記錄,則可以在查詢時執行查詢。
對用戶的一個非常簡單的搜索用戶名,你可以在你的觀點做:
<%= form_tag users_path, :method => 'get', :id => 'users_search' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
在您的用戶模型,你必須定義一個「搜索」的方法:
#users_controller.rb
def self.search(user_name)
if user_name
user_name.downcase!
where('LOWER(name) LIKE ?', "%#{user_name}%")
else
all
end
end
在
最後是你的控制器,你可以調用這個方法:
def index
@users = User.search(params[:search])
end
途徑可以被定義爲像您的默認RO一個GET ute爲頁面:
#routes.rb
resources :users
Vlad SQL中存在語法錯誤。在'foo.last_name' - 'sql =「(LOWER(foo.first_name)LIKE?或LOWER(foo.last_name)LIKE?)?之後缺少一個大括號?」「 - 我嘗試添加它,但編輯時需要6個以上的字符。 ' – Brett 2016-08-18 18:30:12