渲染部分函数是否接受任何类型的集合?我尝试传入 Set (@dogs),但它似乎不起作用:
<%= render(:partial => "dog", :collection => @dogs, :as => :dog) %>
我尝试在文档上查找它 http://guides.rubyonrails.org/layouts_and_rendering.html 但它似乎没有建议对集合有任何限制......我错过了什么或其他方法吗?
谢谢。
PS 但是当我尝试将集合转换为数组并且它起作用时。
它不适用于集合,因为 PartialRenderer#collection
方法尝试使用 to_ary
将集合强制转换为数组:
def collection
if @options.key?(:collection)
collection = @options[:collection]
collection.respond_to?(:to_ary) ? collection.to_ary : []
end
end
但是Set
没有实现 to_ary
,因此,正如您所发现的,您必须像这样传递集合:
:collection => @dogs.to_a
正确的方法是将集合传递给部分是
<%= render partial: "cat", locals: {cats: @cats} %>