Как получить динамический доступ к переменной экземпляра на основе params [: controller]? - PullRequest
4 голосов
/ 07 декабря 2011

У меня есть партиал, который должен обращаться к переменным экземпляра различных контроллеров на основе переменной params[:controller]. Используя singularize и downcase, я определяю имя переменной экземпляра, которая является условным обозначением имени контроллера по соглашению.

Но я получаю только String. Как я могу вызвать переменную экземпляра, которая названа как строка?

Например, у меня есть контроллер Articles, поэтому я делаю следующее:

params[:controller].singularize.downcase # => "article"

Теперь я хочу получить доступ к @article. Как я могу это сделать?

1 Ответ

11 голосов
/ 07 декабря 2011

Существует метод instance_variable_get() в ruby.Поэтому попробуйте что-то вроде этого:

var_name = params[:controller].singularize.downcase # article
instance_variable_get("@#{var_name}")

PS: помните, что вы должны использовать instance_variable_get в правильном контексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...