【问题标题】:How to combining two search parameters in Rails如何在 Rails 中组合两个搜索参数
【发布时间】:2016-12-26 13:05:19
【问题描述】:

我刚刚进入 Rails,想要执行一个简单的从目的地到目的地的搜索。我有基本的搜索功能工作并连接到数据库,但是当我选择 FROM 和 TWO 时,输出被组合起来,我得到了来自特定文本的所有传输和所有传输到特定文本的传输。我想过滤它们,只有那些从到的。

这是我目前所拥有的。

class Transport < ApplicationRecord
def self.searchfrom(searchfrom)
  where("strtloc LIKE ?", "%#{searchfrom}%") 
end

def self.searchto(searchto)
  where("endloc LIKE ?", "%#{searchto}%") 
end
end

我基本上想在两个参数之间添加 AND,但我被卡住了。

这是我的 transports_controller.rb

if params[:searchfrom]
  @transports = Transport.searchfrom(params[:searchfrom])
else
  @transports = Transport.all
end

if params[:searchto]
  @transports = Transport.searchto(params[:searchto])
else
  @transports = Transport.all
end

我还希望能够仅选择 FROM。所以我真的不能做一个简单的AND语句。但一次一个。

感谢任何帮助!

【问题讨论】:

    标签: ruby-on-rails database postgresql search


    【解决方案1】:

    您可以执行以下任一操作:

    @transports = Transport.where("strtloc LIKE ? AND endloc LIKE ?", "#{params[:searchfrom]}%", "#{params[:searchto]}%")

    它将在两个参数之间进行 AND 操作。

    @transports = Transport.where("strtloc LIKE ?", "#{params[:searchfrom]}%")
    # first search for start locations
    @transports = @transports.where("endloc LIKE ?", "#{params[:searchto]}%")
    # then search for end locations in the result of start location.
    

    同时检查:HERE

    【讨论】:

    • 我尝试了第一种方法,遗憾的是它不起作用。我可能在我的 transports_controller 中遗漏了一些东西。编辑!它有效,我之前在控制器中修改了一些东西,我恢复到我在这里发布的内容,现在它就像一个魅力!谢谢!
    • @Robert,很高兴听到这个消息。
    【解决方案2】:

    请检查这个答案:

    Ruby on Rails: Search Form - multiple search fields

    您应该会发现这与您的问题有关。

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 2013-03-07
      • 2013-11-15
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多