Ruby on rails 使用不同类型的元素渲染数组,而不使用默认部分?

Ruby on rails 使用不同类型的元素渲染数组,而不使用默认部分?,ruby-on-rails,ruby,partials,Ruby On Rails,Ruby,Partials,我从tire获得一个搜索结果数组,其中包含各种activemodel类型的对象,我需要将每个对象渲染为一个字符串。目前,我正在对这些结果进行循环,在每个结果上调用render_to_string(result)。这将使用该activemodel对象的默认部分 然而,这要求我为每个我想搜索的类设置默认的partial作为搜索的表示。这意味着在代码的其他地方,我需要显式呈现集合(所有类型相同),我需要显式指定使用我的general use partial呈现,而实际上,general use par

我从tire获得一个搜索结果数组,其中包含各种activemodel类型的对象,我需要将每个对象渲染为一个字符串。目前,我正在对这些结果进行循环,在每个结果上调用render_to_string(result)。这将使用该activemodel对象的默认部分

然而,这要求我为每个我想搜索的类设置默认的partial作为搜索的表示。这意味着在代码的其他地方,我需要显式呈现集合(所有类型相同),我需要显式指定使用我的general use partial呈现,而实际上,general use partial应该是默认值。它还提出了一个问题,如果我需要呈现不同类型的集合,我会怎么做,因为它将使用与搜索相同的部分

我真正想要的是能够传递一个前缀来呈现_到_字符串,这将告诉它查找默认的部分,但在这个目录中-这意味着我可以保持我的搜索部分分开,同时仍然能够轻松地呈现对象

有没有办法做到这一点或其他更好的解决方案?

我想:

 render_to_string :partial => 'searches/result', :collection => @results
然后在该部分中,通过执行以下操作来确定单个结果的显示方式:

case result.class.name
when 'Foo'
...
end
这为结果的格式和显示提供了一个位置。

我会调用:

 render_to_string :partial => 'searches/result', :collection => @results
然后在该部分中,通过执行以下操作来确定单个结果的显示方式:

case result.class.name
when 'Foo'
...
end

这为结果的格式和显示提供了一个单一的位置。

您是否尝试过
渲染到字符串([:search,result])
?我喜欢这个想法,但我得到了
“:search”不是一个与ActiveModel兼容的返回有效部分路径的对象。
您尝试过
渲染到字符串([:search,result])之类的方法吗
?我喜欢这个想法,但我得到的结论是:“:search”不是一个与ActiveModel兼容的对象,它返回一个有效的部分路径。我将尝试一下,我更喜欢做一种前缀类型的事情,并有单独的部分,但这肯定比我目前的解决方案要好得多:)也许可以将'when'子句中的内容分为单独的部分?我想我可以从类名构建部分名称,并使用我编写的部分名称呈现:
=render:partial=>“search_#{search_result.class.name.downcase}”,:object=>search\u result
,效果很好。谢谢:)我会尝试一下,我更喜欢做一种前缀类型的事情,并且有单独的部分,但这肯定比我目前的解决方案要好得多:)也许可以将'when'子句中的内容分为单独的部分?我想我可以从类名和使用它渲染我写了一个部分:
=render:partial=>“search#{search#result.class.name.downcase}”,:object=>search_result
,效果很好。谢谢:)