【问题标题】:rails - specifically including first record in listrails - 特别包括列表中的第一条记录
【发布时间】:2013-08-01 15:10:09
【问题描述】:

使用以下代码显示我的模型中的所有记录时,我排除了索引页上列出的第一行 Submitter

submitters_controller.rb:

def index
@submitters = Submitter.where(:school_id =>@current_user.school_id).order('school_id,first_name').search(params[:search])[1..-1]
respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @submitters }
end
end

但是,我有一个需要显示第一行的搜索选项(尤其是当只有一条记录要显示时)。有没有办法在我的 Submitter.rb (Model) 文件中包含特别包含第一行的内容?

提交者.rb:

def self.search(search)
if search
  Submitter.find(:all, :conditions => ['first_name LIKE :search OR last_name LIKE :search', {:search => "%#{search}%"}])
else
  all
end
end

我尝试将 [0..-1] 添加到我的 Submitter.rb 模型的末尾,这允许我现在进行搜索,但第一条记录仍然隐藏。我知道它正在工作,因为当有多个结果时,我可以在列出的第一行之后看到所有结果:

if search
  Submitter.find(:all, :conditions => ['first_name LIKE :search OR last_name LIKE :search', {:search => "%#{search}%"}])[0..-1]
else

【问题讨论】:

  • 这是一个 Rails 3 应用吗?
  • 是的。 Rails 3.2.11

标签: ruby-on-rails search


【解决方案1】:

试试这个

 def self.search(search)
  if search.present?
    search_query = Submitter.where('first_name LIKE :search OR last_name  LIKE:search', {:search => "%#{search}%"})
    if search_query.count > 1
      result = search_query.offset(1)
    else
      result = search_query
    end
  else
    return self.all
  end
  result.all
end

【讨论】:

  • submitter.rb:37: syntax error, unexpected keyword_end, expecting $end
  • 感谢您的帮助。您的代码在逻辑上对我来说很有意义,但是当我使用更新的代码搜索关键字时,什么也没有发生。没有结果加载,完整列表仍然存在,只是页面刷新。
  • @Devin 尝试使用调试器,看看它是否通过了 if 条件 'search.present?'
  • 对不起,我不熟悉调试器。那是宝石吗?
  • @Devin,是的,看这个railscasts.com/episodes/54-debugging-with-ruby-debug,rails 3 中的肠道使用相同的“调试器”,它为您提供相同的功能。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2014-08-29
相关资源
最近更新 更多