0

階層化された部分スキームがあり、DRYコードを書き込もうとしています。変数をパーシャルに渡し、その配列ステータスを維持して、パーシャル内でパラメーターを使用して別のパーシャルをレンダリングできるようにする必要があり:collectionます。

このページでは、'feed'部分をレンダリングします。

 %div.row
    %div.span6
      %h1 Posts 
      /Post feed
      =render 'feed',:locals => {:feed_items => @posts}
    %div.span6
      %h1 Groups
      /Group feed
      =render 'feed', :locals => {:feed_items => @groups}

これが'feed'部分的です:

%ol
  -if feed_items.first.is_a?(Post)
    =render :partial => 'post_feed_item', :collection => feed_items
  -else
    =render :partial => 'group_feed_item', :collection => feed_items
=will_paginate feed_items

現在、このエラーが発生します。

undefined local variable or method `feed_items' for #<#<Class:0x007fa8e2aa8b00>:0x007fa8e5405390>

更新1:

実際のエラー。:collection最終部分は、渡されたコンポーネントを認識しません。

undefined local variable or method `feed_item' for #<#<Class:0x007fa8e2aa8b00>:0x007fa8e2c6d670>

最終部分'post_feed_item'(レイヤー3?):

%li.feed_item.row-fluid
  %div.image.span3
    =link_to image_tag(feed_item.assets.empty?  ? '/assets/small.png': feed_item.assets.first.image.url(:small), :alt => feed_item.title), post_url(feed_item)

それで、最初の部分にいくつかの問題があります...feed_items配列として解析されていませんか?

4

2 に答える 2

1

呼び出し

= render partial: 'post_feed_item', collection: feed_items

post_feed_item変数ではなくローカル変数を提供しfeed_itemます。これを使用するか、asオプションを渡してローカル変数名を設定します。

= render partial: 'post_feed_item', collection: feed_items, as: :feed_item
于 2013-02-19T02:23:19.913 に答える
0

私はあなたがそれを部分的にレンダリングする必要があると思います:

 %div.row
    %div.span6
      %h1 Posts 
      /Post feed
      =render :partial => 'feed',:locals => {:feed_items => @posts}
    %div.span6
      %h1 Groups
      /Group feed
      =render :partial => 'feed', :locals => {:feed_items => @groups}
于 2013-02-19T01:49:23.190 に答える