簡體   English   中英

Ruby on Rails搜索返回所有內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM