Следует ли широко использовать local_assigns.has_key? частично считать кодовым запахом?

У меня есть частичный Rails, который имеет несколько таких проверок:

 <%= if local_assigns.has_key?(:show_blabla) && show_blabla == false %>
   blabla
 <% end %>

Я думаю, что этот вид скрывает реальный список параметров, которые используются такими частичными, и эй local_assigns даже не в документации.

о чем ты думаешь?

4 ответа

Решение

См. "Передача локальных переменных в под-шаблоны" в Class: ActionView::Base для документации по local_assigns,

На самом деле, эта переменная (local_assigns) задокументирована, хотя ее трудно найти. На самом деле, согласно документации по rails, это рекомендуемый способ проверки определенных переменных. Проверьте rdocs для ActionView::Base

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

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

Я бы порекомендовал использовать определенные?(Show_blabla) и определенные IMO?(Bool) && bool == false - вполне допустимый Ruby.

Но если вам абсолютно необходимо использовать local_assigns, это определенно хак и, скорее всего, какой-то запах кода.

Другие вопросы по тегам