验证来自Thinking Sphinx搜索过滤器的请求和加入结果请求的参数

时间:2012-10-17 06:27:44

标签: ruby-on-rails ruby

我在铁轨上的红宝石新手) 好的,我有控制器的索引操作:

    def index
     condition = ['fulltime','parttime','remote','forone']. select{ |t|  params.has_key?(t.to_sym) }.join(' | ')
 Advert.search params[:search],:order => :created_at, :sort_mode => :desc,  :conditions => {:employment_type=>condition}

但代码的和平:

 ['fulltime','parttime','remote','forone']. select{ |t|  params.has_key?(t.to_sym) }

返回零

为什么?))

我不想用一堆支票编写代码,如:

    if !fulltime.nil? && !fulltime.blank?
      condition = "fulltime"
    end


    if !parttime.nil? && !parttime.blank?
      if !condition.nil? && !condition.blank?
          condition = condition + " | parttime"
      else
        condition ="parttime"
      end

end

但是我使用array.select方法的方式不起作用:(

你能给我一些建议吗?)谢谢!

1 个答案:

答案 0 :(得分:0)

我在irb上尝试了你的代码如下:

> params = { :fulltime => "1" }
=> {:fulltime=>"1"}
> ['fulltime','parttime','remote','forone']. select{ |t|  params.has_key?(t.to_sym) }.join(' | ')
=> "fulltime"

所以它工作正常。如果你从那个代码得到nil,那么params被设置为nil,或者params没有任何['fulltime','parttime','remote','forone']作为键。

查看Rails params explained?个帖子;可能会给出如何正确设置参数的想法。