Измените controller.action_name в Rails - PullRequest
1 голос
/ 29 января 2009

Я нахожусь в одном действии на Rails, но я хочу продолжить обработку в другом действии. Мой код выглядит так:

  send(new_action)                #call the new_action method
  action_name = new_action        #change the controller.action_name
  render :action => new_action    #inform the view that we're in new_action

это работает, но action_name - хотя оно изменяется изнутри экземпляра ActionController - сбрасывается, когда оно извлекается из представления как

controller.action_name 

есть ли способ установить его и заставить его придерживаться?

Редактировать: Я нашел другое решение, которое не связано с этой проблемой, а именно здесь . Спасибо!

1 Ответ

5 голосов
/ 29 января 2009

Вы делаете это неправильно!

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

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

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