首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails控制器在搜索中的错误

Ruby on Rails控制器在搜索中的错误
EN

Stack Overflow用户
提问于 2015-12-11 08:05:45
回答 2查看 102关注 0票数 0

在通过另一个迁移从学生迁移中移除两个字段middle_name、last_name之后,我将面临以下错误。下面是错误。

Searchlogic::NamedScopes::OrConditions::UnknownConditionError in StudentController#advanced_search

条件'last_name‘不是有效的条件,我们找不到任何与此匹配的范围。

代码语言:javascript
复制
RAILS_ROOT: /root/ansipro342
Application Trace | Framework Trace | Full Trace

/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:96:in `interpolate_or_conditions'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:75:in `each'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:75:in `interpolate_or_conditions'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:36:in `or_conditions'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:19:in `or_condition?'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/named_scopes/or_conditions.rb:10:in `condition?'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/scopes.rb:10:in `scope?'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/method_missing.rb:16:in `method_missing'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/conditions.rb:19:in `send'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/conditions.rb:19:in `conditions='
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/conditions.rb:15:in `each'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/conditions.rb:15:in `conditions='
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/date_parts.rb:19:in `conditions='
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/base.rb:18:in `initialize'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/implementation.rb:10:in `new'
/root/ansipro342/vendor/plugins/searchlogic/lib/searchlogic/search/implementation.rb:10:in `search'
/root/ansipro342/app/controllers/student_controller.rb:816:in `advanced_search'

请求 参数: {“搜索”=>{“命令”“=>”,“提交”搜索“=>”}

下面是来自学生控制器的代码区域,其中第816行存在

代码语言:javascript
复制
def advanced_search
    @search = Student.search(params[:search])
    unless params[:search].present?
      @batches = Batch.all
    else
      if params[:search].present?
        @students = Array.new
        if params[:advv_search].present? and params[:advv_search][:course_id].present?
          unless params[:search][:batch_id_equals].present?
            params[:search][:batch_id_in] = Batch.find_all_by_course_id(params[:advv_search][:course_id]).collect{|b|b.id}
          end
        end
        if params[:search][:is_active_equals]=="true"
          @students = Student.ascend_by_first_name.search(params[:search]).paginate(:page => params[:page],:per_page => 30)
        elsif params[:search][:is_active_equals]=="false"
          @students = ArchivedStudent.ascend_by_first_name.search(params[:search]).paginate(:page => params[:page],:per_page => 30)
        else
          @students = [{:student => {:search_options => params[:search], :order => :first_name}},{:archived_student => {:search_options => params[:search], :order => :first_name}}].model_paginate(:page => params[:page],:per_page => 30)#.sort!{|m, n| m.first_name.capitalize <=> n.first_name.capitalize}
        end
        @searched_for = ''
        @searched_for += "<span>#{t('name')}/#{t('admission_no')}: " + params[:search][:first_name_or_admission_no_like].to_s + "</span>" if params[:search][:first_name_or_admission_no_like].present?
        @searched_for += "<span>#{t('name')}: " + params[:search][:first_name_like].to_s + "</span>" if params[:search][:first_name_like].present?
        @searched_for += " <span>#{t('admission_no')}: " + params[:search][:admission_no_equals].to_s + "</span>" if params[:search][:admission_no_equals].present?
        if params[:advv_search].present? and params[:advv_search][:course_id].present?
          course = Course.find(params[:advv_search][:course_id])
          batch = Batch.find(params[:search][:batch_id_equals]) unless (params[:search][:batch_id_equals]).blank?
          @searched_for += "<span>#{t('course_text')}: " + course.full_name + "</span>"
          @searched_for += "<span>#{t('batch')}: " + batch.full_name + "</span>" if batch.present?
        end

请帮助我不知道last_name在哪里存在,它在错误中显示,我是非常新的红宝石rails和需要这一点很重要。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-11 11:00:08

谢谢你的回复,问题解决了。

问题是在索引迁移中,实际上我从create迁移中删除了列,但是在索引迁移中它已经存在了。

票数 0
EN

Stack Overflow用户

发布于 2015-12-11 11:29:20

伙计,这段代码太大了,而且不太可能有人一次读懂它。安装rubocop或其他一些棉布工具,并清理这一混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34218723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档