Ruby on rails RubyonRails搜索返回所有内容
好了,伙计们,我知道在过去的几天里,随着我的第一个ROR应用的推出,我遇到了很多初学者的问题(测试截止日期是本周三)。一切都很好,除了我在测试我的应用程序时遇到的一个小问题 该应用程序用于赌场,以便他们进行背景调查。我有一个申请者模型,申请者有名字和姓氏属性。我希望能够搜索我的申请者索引页,但每当我在搜索中键入姓名时,浏览器将返回所有申请者的新页面,而不仅仅是我正在寻找的页面 我整个上午都在上网寻找解决办法,但我运气不好 这是我的申请模型Ruby on rails RubyonRails搜索返回所有内容,ruby-on-rails,ruby-on-rails-4,search,Ruby On Rails,Ruby On Rails 4,Search,好了,伙计们,我知道在过去的几天里,随着我的第一个ROR应用的推出,我遇到了很多初学者的问题(测试截止日期是本周三)。一切都很好,除了我在测试我的应用程序时遇到的一个小问题 该应用程序用于赌场,以便他们进行背景调查。我有一个申请者模型,申请者有名字和姓氏属性。我希望能够搜索我的申请者索引页,但每当我在搜索中键入姓名时,浏览器将返回所有申请者的新页面,而不仅仅是我正在寻找的页面 我整个上午都在上网寻找解决办法,但我运气不好 这是我的申请模型 class Applicant < ActiveR
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
我的看法是
<section>
<%= form_tag("/applicants", method: "get") do %>
<%= label_tag(:applicants, "Search for:") %>
<%= text_field_tag(:q) %>
<br>
<%= submit_tag("Search") %>
<% end %>
<br>
</section>
更改此行
@applicants = Applicant.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"])
到
轰
如果您需要进一步的实时配对帮助,可以查看我的codementor页面并与我联系以获得帮助。这应该可以:
def index
@applicants = Applicant.search(params[:q])
end
因为您的表单具有此文本字段:
<%= text_field_tag(:q) %>
这意味着文本字段中的值将以params[:q]的形式发送 您使用的是Rails 4吗?您可以发布参数日志吗?我首先通过复制和粘贴尝试了此解决方案,但出现了语法错误“]”,因此我使用了[]并使其正常工作,但它仍然返回所有申请者。谢谢你的帮助!新方法中不应该有任何[…]。。。。。。不知道你在做什么,但这已经运行了5到6年了,所以我知道它是有效的。嘿,所以我继续,把q改成了搜索(有点像你说的,但逻辑应该是一样的)但是现在我遇到了一个运行时错误:当试图打印匹配搜索的申请者时,引用代码行的符号不受支持。谢谢你的帮助!您使用的是哪个查询?如果您使用的是RUBYCASTS.IO在评论中建议的申请人.where(“first_name ILIKE?”,“%#{search}%]”),那么这可能会导致问题,因为ILIKE运算符是postgresql数据库特有的。如果您使用的是该查询,而不是postgres DB,请尝试在查询中将ILIKE更改为LIKE。我切换回@appenders=appender.find(:all,:conditions=>['first_name LIKE?',“%#{search}%])我是否应该遵循其他建议?已解决!谢天谢地,这是两个答案的结合。天哪,我今天的比赛已经结束了!非常感谢你的帮助
def index
@applicants = Applicant.search(params[:q])
end
<%= text_field_tag(:q) %>