我在铁轨上的红宝石新手) 好的,我有控制器的索引操作:
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方法的方式不起作用:(
你能给我一些建议吗?)谢谢!
答案 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?个帖子;可能会给出如何正确设置参数的想法。