Должны ли вы использовать только локальные переменные в частичном?

Использование локальных переменных кажется целесообразным в партиале, который можно использовать во всем приложении, чтобы избежать зависимостей в приложении.

Но внутри одного контроллера кажется приемлемым ссылаться на переменные экземпляра, которые, как вы знаете, будут доступны во всех действиях, использующих партиал.

Однако, если вы сделаете это, существует риск того, что конкретное действие может быть изменено, чтобы больше не предоставлять переменную экземпляра для своего представления. Тогда частичное перестанет работать. Однако я не уверен, что это действительно проблема, поскольку обычный просмотр может столкнуться с тем же риском.

Имеет ли значение, ссылаетесь ли вы на переменные экземпляра в партиале?


person eggdrop    schedule 26.05.2009    source источник


Ответы (2)


Ты сегодня в ударе! :-)

Вы можете передавать переменные в партиал как :locals, чтобы все было красиво и чисто. Например,

render :partial => 'my_partial', :locals => { :some_variable => some_variable, :some_important_value => 'an important point!' }

Затем эти переменные доступны в частичном представлении:

<%= some_variable %>
<%= some_important_value %>

Тем не менее, нет ничего особенно плохого в использовании переменных экземпляра в ваших партиалах.

person Tim Sullivan    schedule 26.05.2009
comment
Еще раз спасибо за ответ :) Итак, вы бы сказали, что когда-либо приемлемо ссылаться на переменную экземпляра в партиале, или справедливо сказать, что это создает неприемлемую зависимость? - person eggdrop; 26.05.2009
comment
Эх, все в порядке. Переменные экземпляра доступны в течение всего сеанса, так что, как вы говорите, это не лучше и не хуже, чем доступ к одному из них в представлении. - person Tim Sullivan; 26.05.2009

я бы рекомендовал использовать переменные экземпляра только до тех пор, пока партиал не является общим, так как это может очень быстро запутаться;)

person grosser    schedule 26.05.2009