当属性为零时,如何使用动态查找器避免零?
link_to 'articles', articles_path, :attr1 => 'foo', :attr2 => 'bar'
在控制器中:
Article.find_all_by_attr1_and_attr2(params[:attr1], params[:attr2])
但是,如果控制器仅接收 [:attr1]
我得到一个零。
link_to 'articles', articles_path, :attr1 => 'foo', :attr2 => 'bar'
And in the controller:
Article.find_all_by_attr1_and_attr2(params[:attr1], params[:attr2])
However if the controller receives only [:attr1]
I get a nil.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果某些查找器实际上并不存在,则动态查找器可能不是正确的方法。在这种情况下,您可能最好在 Rails 2 上使用
Article.find(:all, :conditions => {})
并在 Rails 2 上使用Article.where()
Rails 3。这是我不久前针对另一个问题想到的一种方法:
在上面的情况下,您将循环遍历数组中的所有字段,并将它们中的每个字段添加到结果散列中(如果它在 in 中且不为空)
参数
。然后,您将哈希值传递给查找器,一切都很好。Dynamic finders may not be the right way to go if some of finders aren't actually present. In this case, you're probably better off using
Article.find(:all, :conditions => {})
on Rails 2 andArticle.where()
on Rails 3.Here's a method I came up with for another question a while back:
In the above case, you'd loop over all fields in the array, and add each one of them to the resulting hash if it's in and not empty in
params
. Then, you pass the hash to the finder, and everything's fine and dandy.