[英]Ruby on Rails Search Returns Everything
好的,伙計們,我知道最近幾天我的第一個ROR應用發布時遇到了很多初學者的問題(本周三的Beta截止日期)。 一切都很好,除了我在測試我的應用程序時遇到的一個小問題。
該應用程序適用於賭場,以便他們處理背景調查。 我有一個申請人模型,申請人具有first_name last_name屬性。 我希望能夠搜索申請人的索引頁面,但是每當我在搜索中輸入姓名時,瀏覽器就會返回所有申請人的新頁面,而不僅僅是我正在尋找的那個頁面...
我整個上午都在搜尋互聯網,以尋求解決方案,但是我沒有運氣。
這是我的申請人模型
class Applicant < ActiveRecord::Base
validates_presence_of :first_name, :last_name, :social, :dob
validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create }
validates :social, format: {with: /^(\d{3}-?\d{2}-?\d{4}|XXX-XX-XXXX)$/i, :multiline => true, on: :create}
def self.search(search)
if search
@applicants = Applicant.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"])
else
@applicants = Applicant.all
end
end
end
(對不起的縮進很抱歉,它在我的文件中看起來更好)我的控制器看起來像這樣
def index
@applicants = Applicant.search(params[:search])
end
我的觀點看起來像
<section>
<%= form_tag("/applicants", method: "get") do %>
<%= label_tag(:applicants, "Search for:") %>
<%= text_field_tag(:q) %>
<br>
<%= submit_tag("Search") %>
<% end %>
<br>
</section>
這應該工作:
def index
@applicants = Applicant.search(params[:q])
end
因為您的表單具有以下文本字段:
<%= text_field_tag(:q) %>
這意味着來自文本字段的值將以params [:q]發送。
更改此行
@applicants = Applicant.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"])
至
@applicants = Applicant.where("first_name ILIKE ?", "%#{search}%")
繁榮!
如果您需要進一步的實時配對幫助,可以查看我的codementor頁面https://codementor.io/rubycasts/#reviews並與我聯系以獲取幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.