Путь Rails для уменьшения дублирования HTML - PullRequest
0 голосов
/ 20 июля 2010

В моем файле .html.erb у меня много строк информации для отображения. Я делаю это с помощью простого: (используя план CSS)

<% for event in @user.events %>
<div class="span-5 border">Descriptor:</div> <div class="span-5 last"><%=h event.foo%></div><br/>
<% end %>

Как я могу сделать так, чтобы я мог вызывать некоторую функцию, которая отображала бы информационную часть, и я передавал бы ей только дескриптор (строковый литерал) и метод для события (в данном случае "foo").

Я новичок в рельсах, и я думаю, что это можно сделать с помощью частичного рендера, но я не совсем уверен.

Спасибо

Ответы [ 2 ]

1 голос
/ 20 июля 2010
render :partial => 'event', :collection => @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'}

Если вы используете последнюю версию рельсов, эта сокращенная версия также будет работать:

render @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'}

В вашей части

<div class="span-5 border"><%= descriptor -%></div> <div class="span-5 last"><%=h event.send(method) %></div><br/>
0 голосов
/ 20 июля 2010

Вы можете использовать частичные.Его преимущество в том, что он делает код СУХИМ. Также вы можете заменить конкретный div обратным вызовом Ajax.Сохраните части с префиксом '_' в имени файла, например _test.rhtml

render :partial => 'test', :layout => false 
...