轨道上的红宝石 3 - 渲染集合的部分



渲染部分函数是否接受任何类型的集合?我尝试传入 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} %>

相关内容

  • 没有找到相关文章

最新更新