2015-02-25 3 views
0

У меня есть действие, которое устанавливает экземпляр, достоверный до :edit и :new действий в контроллере. Это работает, если я вызываю эти действия непосредственно в запросе. Однако, если я вызываю :update или :create, и они не работают, после чего в пределах respond_to выполняется блок format.html { render action: :edit }, before_action не запускается. Почему это?Почему before_action не выполняется, когда действие вызывается из response_to?

ответ

2

Потому что render action: :edit фактически не вызывает действие контроллера, а только визуализирует edit шаблон.

Вы найдете более подробную информацию в Rails Guides:

http://guides.rubyonrails.org/layouts_and_rendering.html#the-difference-between-render-and-redirect-to

+0

Я так и думал, но как решить проблему с обратными вызовами? Я нашел эту [действительно хорошую статью] (http://jgaskins.org/blog/2014/08/25/better-alternative-to-rails-before_action-to-load-objects) о создании вспомогательных методов, которые memoize экземпляров vartiables , Это способ пойти или есть лучшее решение? –

+1

Это выглядит хорошо для меня. –

Смежные вопросы