好的伙计我知道在我的第一个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>
答案 0 :(得分:1)
这应该有效:
def index
@applicants = Applicant.search(params[:q])
end
因为您的表单包含以下文本字段:
<%= text_field_tag(:q) %>
这意味着文本字段中的值将以params [:q]发送。
答案 1 :(得分:0)
更改此行
@applicants = Applicant.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"])
到
@applicants = Applicant.where("first_name ILIKE ?", "%#{search}%")
BOOM!
如果您需要进一步的实时配对帮助,可以查看我的代码页https://codementor.io/rubycasts/#reviews并与我联系以寻求帮助。