Tworzę aplikację z rubinem na szynach, gdzie mam pozycje/_item.html.erb. Wewnątrz częściowej znajduje się deklaracja zysku, więc w razie potrzeby mogę dodać dodatkową treść. W tym przypadku chcę dodać konkretny przycisk do elementu w zależności od tego, które wywołania są częściowe.Renderowanie zawartości wewnątrz częściowego = yield =
To co próbowałem i to sprawia, że częściowe, ale to nie czyni blok:
_item.html.erb
<%= yield if block_given? %>
<div>
<%= item.name %>
</div>
someview.html.erb
...
<% render(:partial => 'items/item', :collection => current_user.items do %>
<%= "HELLO" %>
<% end %>
...
Próbowałem również używać content_for i innych rzeczy bez powodzenia. Czy istnieje sposób, aby móc renderować określoną zawartość w ramach częściowej przez zysk? Obecnie używam Rails3
EDIT:
Znalazłem się, że jest to: kolekcja hash który uniemożliwia wstawić blok.
Oba kawałki tej pracy kodu:
<%= render :layout => 'items/item' do %>
Hello world
<% end %>
<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %>
Hello world
<% end %>
Oznacza to, że jeśli zrobię .each mogłem osiągnąć to, co chcę, ale to będzie brzydki kod. Ktoś wie, jak to obejść?
Jak pracujesz na to uwagę? Próbowałem ustawić treść content_for wewnątrz powyżej, poniżej i wokół renderowania i nadal nie widzę zawartości renderowanej z częściowym. Czy to dlatego, że używam również kolekcji? – roloenusa
W _item.html.erb możemy użyć content_for zamiast yield '<% content_for: foobar if content_for? : foobar%> ' – rajkamal
Czy jest szansa, że możesz rzucić szybki przykład jak wygląda wywoływanie renderowania? – roloenusa