0

render 部分関数は任意のタイプのコレクションを受け取りますか? Set (@dogs) を渡そうとしましたが、うまくいかないようです:

<%= render(:partial => "dog", :collection => @dogs, :as => :dog) %>  

ドキュメントhttp://guides.rubyonrails.org/layouts_and_rendering.htmlで調べてみましたが、セットの制限を示唆していないようです...見逃したものや別の方法がありますか?

ありがとう。

PSしかし、非常にセットを配列に変換しようとすると、うまくいきました。

4

2 に答える 2

1

PartialRenderer#collectionメソッドは次を使用してコレクションを配列に強制しようとするため、セットでは機能しませんto_ary

def collection
  if @options.key?(:collection)
    collection = @options[:collection]
    collection.respond_to?(:to_ary) ? collection.to_ary : []
  end
end

ただし、 Sets は を実装していないto_aryため、ご覧のとおり、次のようにコレクションを渡す必要があります。

:collection => @dogs.to_a
于 2013-02-04T15:43:13.880 に答える
-1

適切な方法は、コレクションをパーシャルに渡すことです

<%= render partial: "cat", locals: {cats: @cats} %>

于 2013-02-04T15:31:57.280 に答える