Ruby on rails 3 呈现集合的部分
render partial函数是否接受任何类型的集合?我试着将一组(@dogs)传入,但似乎不起作用:Ruby on rails 3 呈现集合的部分,ruby-on-rails-3,partials,Ruby On Rails 3,Partials,render partial函数是否接受任何类型的集合?我试着将一组(@dogs)传入,但似乎不起作用: <%= render(:partial => "dog", :collection => @dogs, :as => :dog) %> “dog”,:collection=>@dogs,:as=>:dog)%> 我试着在文档中查找它,但它似乎没有对集合提出任何限制。。。有什么我错过了或是有其他方法可以发现的吗 谢谢 但是当我尝试将集合转换为数组时,它成功
<%= render(:partial => "dog", :collection => @dogs, :as => :dog) %>
“dog”,:collection=>@dogs,:as=>:dog)%>
我试着在文档中查找它,但它似乎没有对集合提出任何限制。。。有什么我错过了或是有其他方法可以发现的吗
谢谢
但是当我尝试将集合转换为数组时,它成功了。正确的方法是将集合传递给partials is
该方法无法处理集合,因为该方法试图使用将集合强制为一个数组,使之成为一个数组:
def collection
if @options.key?(:collection)
collection = @options[:collection]
collection.respond_to?(:to_ary) ? collection.to_ary : []
end
end
但是Set
s没有实现到_ary
,因此,正如您所发现的,您必须像这样传递集合:
:collection => @dogs.to_a
这是将整个集合传递给部分集合的正确方法。但是,render partial:“cat”,collection:@cats
为集合中的每个对象渲染一次partial,这是一件完全不同的事情。您认为基本上不要使用集合,因为大多数ruby代码只知道如何处理哈希/数组?