2011-01-20 15 views
2
link_to 'articles', articles_path, :attr1 => 'foo', :attr2 => 'bar' 

和Controller:當屬性爲零時,如何避免使用動態查找器?

Article.find_all_by_attr1_and_attr2(params[:attr1], params[:attr2]) 

但是,如果控制器接收唯一[:attr1]我得到一個零。

+0

那麼你會怎麼做呢?沒有足夠的信息來有效回答這個問題。 – 2011-01-21 00:05:45

回答

2

如果某些發現者實際上並不存在,動態發現者可能不是正確的選擇。在這種情況下,你就要去使用Article.find(:all, :conditions => {}) on Rails的2 Article.where() on Rails的可能會更好3.

這是我想出了一個方法,另一個問題而回:

conditions = [:attr1, :attr2].inject({}) do |hsh, field| 
    hsh[field] = params[field] if params[field] && params[field].present? 
    hsh 
end 

# Rails 2 
@articles = Article.find(:all, :conditions => conditions) 

# Rails 3 
@articles = Article.where(conditions) 

在上述情況下,你可以遍歷數組中的所有字段,並將它們中的每一個添加到生成的哈希中,如果它在params中並且不是空的。然後,你將散列傳遞給查找器,並且一切都很好,很花哨。

+0

你先生是我的英雄謝謝! – elkalto23 2011-01-21 00:19:36

相關問題