我在尝试执行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中的数据库。我可以很好地在我的应用程序的其他任何地方显示该数据库中的条目。
答案 0 :(得分:0)
您似乎收到此错误,因为当您第一次在votsphonebookresults
上调用@search
时,您检查的所有属性都未设置,因此find_votsphonebookresults
将返回nil,并在{ {1}},当您在@votsphonebookresults
上调用where
时,会收到UndefinedMethod错误。
但更根本的是,你的代码在搜索类中存在的问题在于你有一个无限循环,其中nil
调用find_votsphonebookresults
,而votsphonebookresults
将调用fund_votsphonebookresults
,所以你和#39;一旦第一个问题得到修复,就会出现堆栈溢出。