渲染部分函数是否采用任何类型的集合?我试过传递一个Set(@dogs)并且它似乎不起作用:
<%= render(:partial => "dog", :collection => @dogs, :as => :dog) %>
我尝试在文档http://guides.rubyonrails.org/layouts_and_rendering.html上查找它,但它似乎没有暗示对集合的任何限制......是否有我错过的内容或其他方法可以找到?
感谢。
PS但是当我试图将这个设置转换为数组并且它有效时。
答案 0 :(得分:1)
它不适用于集合,因为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
答案 1 :(得分:-1)
正确的方法是将集合传递给部分
<%= render partial: "cat", locals: {cats: @cats} %>