Rails App中的高级搜索 - MS SQL Server

时间:2016-05-11 07:08:44

标签: ruby-on-rails sql-server railscasts

我在尝试执行Railscasts#111高级搜索中概述的搜索时遇到错误。

我现在的代码:

搜索控制器

class SearchesController < ApplicationController
def new
    @search = Search.new
end

def create
    @search = Search.new(search_params)
end

def show
    @search = Search.find(params[:id])
end

private

def search_params
  params.require(:search).permit(:firstname, :surname, :phonenumber, :department, :division, :address, :note)
end
end

show.html.erb

<h1>Search Results</h1>
<%= render @search.votsphonebookresults %>

search.rb

class Search < ActiveRecord::Base
def votsphonebookresults
    @votsphonebookresults ||= find_votsphonebookresults
end

private

def find_votsphonebookresults

    votsphonebookresults = votsphonebookresults.where("firstname like ?", "%#{firstname}%") if firstname.present?
    votsphonebookresults = votsphonebookresults.where("surname like ?", "%#{surname}%") if surname.present?
    votsphonebookresults = votsphonebookresults.where("OfficeNumber like ?", "%#{OfficeNumber}%") if phonenumber.present?
    votsphonebookresults = votsphonebookresults.where("Department like ?", "%#{Department}%") if department.present?
    votsphonebookresults = votsphonebookresults.where("Division like ?", "%#{Division}%") if division.present?
    votsphonebookresults = votsphonebookresults.where("Address like ?", "%#{Address}%") if address.present?
    votsphonebookresults = votsphonebookresults.where("Note like ?", "%#{Note}%") if note.present?
    votsphonebookresults
end
end

我正在获得一个未定义的方法`其中&#39;为零:NilClass&#39;尝试执行搜索时出错。搜索表单没问题,但提交会在&#39;其中&#39;

中产生问题

我正在搜索MS SQL Server中的数据库。我可以很好地在我的应用程序的其他任何地方显示该数据库中的条目。

1 个答案:

答案 0 :(得分:0)

您似乎收到此错误,因为当您第一次在votsphonebookresults上调用@search时,您检查的所有属性都未设置,因此find_votsphonebookresults将返回nil,并在{ {1}},当您在@votsphonebookresults上调用where时,会收到UndefinedMethod错误。 但更根本的是,你的代码在搜索类中存在的问题在于你有一个无限循环,其中nil调用find_votsphonebookresults,而votsphonebookresults将调用fund_votsphonebookresults,所以你和#39;一旦第一个问题得到修复,就会出现堆栈溢出。