Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails搜索返回所有内容_Ruby On Rails_Ruby On Rails 4_Search - Fatal编程技术网

Ruby on rails RubyonRails搜索返回所有内容

Ruby on rails RubyonRails搜索返回所有内容,ruby-on-rails,ruby-on-rails-4,search,Ruby On Rails,Ruby On Rails 4,Search,好了,伙计们,我知道在过去的几天里,随着我的第一个ROR应用的推出,我遇到了很多初学者的问题(测试截止日期是本周三)。一切都很好,除了我在测试我的应用程序时遇到的一个小问题 该应用程序用于赌场,以便他们进行背景调查。我有一个申请者模型,申请者有名字和姓氏属性。我希望能够搜索我的申请者索引页,但每当我在搜索中键入姓名时,浏览器将返回所有申请者的新页面,而不仅仅是我正在寻找的页面 我整个上午都在上网寻找解决办法,但我运气不好 这是我的申请模型 class Applicant < ActiveR

好了,伙计们,我知道在过去的几天里,随着我的第一个ROR应用的推出,我遇到了很多初学者的问题(测试截止日期是本周三)。一切都很好,除了我在测试我的应用程序时遇到的一个小问题

该应用程序用于赌场,以便他们进行背景调查。我有一个申请者模型,申请者有名字和姓氏属性。我希望能够搜索我的申请者索引页,但每当我在搜索中键入姓名时,浏览器将返回所有申请者的新页面,而不仅仅是我正在寻找的页面

我整个上午都在上网寻找解决办法,但我运气不好

这是我的申请模型

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) %>