Не удается получить сообщения об ошибках для отправки модели на один контроллер с другим Rails 2.3.2 - PullRequest
0 голосов
/ 18 февраля 2011

Я читал об этом на постах других людей, и до сих пор не могу понять, какая у меня проблема.Поэтому я решил спросить.

У меня есть форма для загрузки аватара.Эта форма отображается из: controller => 'board',: action => 'show'

<% form_tag("avatar/upload", :multipart => true ) do %>
  <%= error_messages_for :avatar %>
  ...

Это прекрасно работает.Проблема в том, что я не могу отобразить сообщения об ошибках.

Загрузка выполняется: controller => 'avatar',: action => 'upload'

if params_posted?(:avatar)
  image = get_image(params)
  @board = Board.find(session[:board_id])
  @avatar = Avatar.new(@board.id, image)
  if @avatar.save
    # ???
  end
end

Сейчасэто та часть, с которой у меня проблемы.Я знаю, что не могу выполнить redirect_to, или я потеряю error_messages_for @avatar и, следовательно, не получаю сообщений об ошибках, но выполнение рендеринга - проблема, потому что у меня есть несколько маршрутов.следующее:

map.connect 'board/celebrating/:id/:name', :controller => 'board', :action => 'show'

Итак, я хочу знать, как снова отобразить плату, расположенную по адресу: controller => 'board',: action => 'show' и отобразить сообщения об ошибках для @avatar?

Извините, если это кажется тривиальным.Для меня это была борьба.Заранее спасибо.

Митчелл

1 Ответ

0 голосов
/ 18 февраля 2011

Вы можете сделать это путем рендеринга шаблона вместо перенаправления или рендеринга действия.Например, если вы хотите отобразить board / show.html.erb в случае сбоя, вы должны сделать следующее:

if params_posted?(:avatar)
  image = get_image(params)
  @board = Board.find(session[:board_id])
  @avatar = Avatar.new(@board.id, image)
  if @avatar.save
    ...
  else
    render :template => 'boards/show'
  end
end

Помните, что действие BoardsController # show не будет выполнено,Ваши флеш-сообщения и переменные экземпляра (@avatar, @board) будут сохранены.

...