Здесь у меня есть два метода контроллера:
def invite
if request.post?
begin
email = AccountMailer.create_invite(@user,url)
AccountMailer.deliver(email)
flash[:notice] = "Invitation email sent to #{@user.email}"
rescue
#mail delivery failed
flash[:error] = "Failed to deliver invitation"
end
redirect_to :action => :show, :id => @user.id
end
end
и
def show
@title = "User #{@user.full_name}"
end
Проблема, когда я отправляю приглашение и перенаправляюсь к./шоу, я не вижу сообщений вообще. Если я изменяю redirect_to для рендеринга, сообщение появляется. Однако, разве это не предназначено, чтобы флэш-память работала в непосредственных последующих запросах?
BTW, я использую установку Rails+Passenger, это могло быть так, чтобы перенаправленный запрос перешел к другому экземпляру приложения?
Блок восстановления устанавливает flash [: error], а не flash [: notice]. Ваше представление действительно отображает и то, и другое?
Погуглил получше и нашел это обсуждение:
http://www.mail-archive.com/activescaffold@googlegroups.com/msg04284.html
Решение есть: заменить плагин на
script/plugin install git://github.com/ewildgoose/render_component.git -r rails-2.3 --force
Хотя я не использую ActiveScaffold, есть некоторый унаследованный код, который зависит от плагина render_component. Обновление плагина до версии ветки помогло, хотя я планирую полностью избавиться от него.