#ruby-on-rails
#ruby-on-rails
Вопрос:
У меня есть эти два метода:
def set_asset
@asset = current_user.assets.find(params[:id])
rescue ActiveRecord::RecordNotFound
redirect_to assets_url, notice: 'resource does not exist'
end
def get
send_file @asset.uploaded_file.path, type: @asset.uploaded_file_content_type
rescue ActionController::MissingFile
redirect_to assets_url, notice: 'missing file'
end
В случае возникновения отсутствующего файла или RecordNotFound блоки восстановления в этих методах успешно перенаправляются на путь assets_url . Однако flash не установлен (я его отладил)!
Почему это может происходить. Я пробовал flash.now[:notice] = и это тоже не работает (хотя это следует использовать только при рендеринге другого представления)…
Обновить
Прямо сейчас это все, что содержит мое представление assets / index.html.haml:
= debug flash
И он постоянно пуст
Комментарии:
1. Можете ли вы добавить представления, в которых flash, похоже, не отображается, то есть ваше
assets_url
представление?2. Никогда не делайте этого. НИКОГДА. спасательные исключения. Если вы знаете, что что-то выйдет из строя, предотвратите это, никогда не спасайте 🙂
Ответ №1:
Controller.rb
flash[:notice] = "resource does not exist"
Вид
-flash.each do |name, msg|
= label_tag msg