Render view a parametry

Witam
chcialbym uniknac petli w view:

controller:
@items = Item.Find :all

Layouts:
row_layout:

WYPISANIE: <%= item =>

View:
<% @items.each { |i| %>
<%= render :partial => ‘row_layout’, :locals { :item => i } %>
<% } %>

i wpakowac do to layouts po czym wyrenderowac to w taki sposob

Layouts:
row_layout
WYPISANIE: <%= item =>

items_layout:

<% @items.each { |i| %>
<%= render :partial => ‘row_layout’, :locals { :item => i } %>
<% } %>

View:
<%= render :partial => ‘items_layout’, :locals => { [color=red]:items = @items[/color] } %>

i wlasnie tutaj jest blad, bowiem jak przekazac do :items wyniki z controllera @items ?
probowalem juz na kilka sposobow i nic, ma ktos moze jakis pomysl? Czy to da sie w ogole zrobic? wciaz dostaje

compile error

robisz to jakoś dziwnie, stwórz sobie widok o nazwie np “_item” i umieść w nim kod wypisujący tą jedną pozycję
a następnie w głównym widoku dodaj taki kod:

<%= render :partial => 'item', :collection => @items %>

albo krócej

<%= render :partial => @items %>

Chyba za bardzo kombinujesz z tym pomysłem, dlaczego chcesz sie pozbywać tej pętli z widoku?
Co do compile error, to tam powinno byc :locals => { :items => @items } a w items_layout <% items.each { |i| %> - kozystasz przeciez ze zmiennej lokalnej przekazanaj do widoku przel locals, wiec nie ma @ przed nazwa zmiennej.

@ronin
potrzebne mi to do wylistowania w cmsie rekordow. chcialbym zrobic cos takiego ze zawsze mi sie bedzie tworzyla lista rekordow na podstawie @items, czyli jak wsadze tam dowolna kolekcje to wszystko tak samo sie wylistuje tylko ze dane beda inne (to tak z grubsza idea wyglada)

<%= render :partial => 'item', :collection => @items %>

a jak sie odwolac do kolekcji items, w layoutcie _item?
poza tym jesli ten lay ma sciezke: cms/layouts/_item to jak w render to ustawic? po prostu <% render :partial => ‘cms/layouts/item’, :collection => @items %> tak?

@balinski
hmm wlasnei nie dziala taka konstrukcja jak podales, sprawdzalem ja przedtem :expressionless: wywala sie przy {:items => @items } :expressionless:

pozdr.

to co ja napisałem to nie jest layout więc umieść go gdzie chcesz ale nie w katalogu layouts,
a do tej kolekcji odwołujesz się przez zmienną item, tylko że to się odwołuje nie do całej kolekcji tylko do aktualnie przetwarzanego elementu

jak do partiala podajesz parametr collection to rails dla każdego elementu tej kolekcji wywołuje ten partial i do aktualnego elementu można się odwołać przez nazwę tego partiala, w tym przypadku będzie to item

super, dzieki za objasnienie

pozdr.