-1

我是 ruby​​ on rails 的新手)好的,我有带索引操作的控制器:

    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 方法的方式不起作用:(

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

4

1 回答 1

0

我在 irb 上尝试了您的代码,如下所示:

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

所以它工作正常。如果您从该代码中得到 nil,则参数被设置为 nil,或者参数没有 ['fulltime','parttime','remote','forone'] 作为键。

查看Rails 参数解释?线; 可能会给出如何正确设置参数的想法。

于 2012-10-17T07:01:11.553 回答