Как отобразить частичное в строку из фильтра, подключенного к контроллеру - PullRequest
0 голосов
/ 10 апреля 2010

У меня есть код, который мне нужно использовать на нескольких контроллерах в приложении rails 1.0 (по странным причинам я не могу перейти на более новые rails). Я извлек соответствующий код в объект filer и использую конструкцию around_filter для его выполнения.

Перед извлечением я использовал метод render_to_string () для получения содержимого визуализированного фрагмента в строку. Однако этот метод защищен, поэтому я не могу получить к нему доступ из своего объекта Filter. В качестве обходного пути я попытался добавить это в свой ApplicationController:

def render_to_string(*a)
  super(*a)
end 

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

Can only render or redirect once per action

Если до извлечения такой ошибки не было. Зачем? Есть ли другой подход, который я должен использовать здесь?

1 Ответ

0 голосов
/ 10 апреля 2010

Насколько я могу судить, действие вызовет render перед выполнением каких-либо фильтров. Так как render_to_string работает, запустив render, сохраняя результат в строку и по существу отменяя рендеринг, появляется «Может рендериться или перенаправлять только один раз за действие», потому что временный вызов рендеринга происходит после «реального» вызова рендеринга.

Я исправил это, просто вызвав мой метод after в конце моего действия, а не используя after_filter или around_filter.

Я также переместил свои фильтры в Mix-in, чтобы более элегантно избежать проблемы с уровнем защиты.

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