2009-02-20 3 views
3

Глядя через рельсы 2.3 релиз RC1 примечание я вижу это:Получение имени экземпляра переменной

# Equivalent of render :partial => 'articles/_article', :object => @article 
render @article 

Так или иначе метод render является выяснение, что объект, передаваемый Int он присваивается переменной экземпляра с имя article. Как оно работает?

ответ

9

Он фактически определяет частичный путь, используя тип объекта (модель), а не имя переменной экземпляра. Таким образом, до тех пор, пока тип является статьей, это будет работать, даже если переменная экземпляра @foo.

См. Код ActionController :: RecordIdentifier.partial_path для того, как путь вычисляется из объекта.

1

Ответ Дэйва Рэя верен: рельсы ничего не делают с именем переменной здесь. В общем случае подобная интроспекция, о которой вы спрашиваете, возможна с помощью библиотеки ParseTree, но имеет проблемы с переносимостью (JRuby, Ruby 1.9 и т. Д.).