Rails: как сохранить объектные ошибки при перенаправлении - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над плохим обслуживанием убранных рельсов.У меня есть действие обновления на рельсах, которое как для успешного, так и для неудачного обновления включает в себя перенаправление (не рендеринг), потому что маршруты испорчены, и я не могу легко напечатать рендер 'edit' (который, я полагаю, сохранит ошибки).

Есть ли способ сохранить ошибки объекта в представлении, чтобы отобразить их как ошибки в форме?Потому что при перенаправлении в представлении, что касается формы, ошибок там нет.Это выглядит примерно так:

      complex_path = "/path_name/path_2name/edit/#{@product.id}"
      if @product.update(part1_params)
        flash[:notice] = completion_message
        format.html { redirect_to complex_path
 and return }
      else
        flash[:notice] = "Unable to save Product. "
        format.html { redirect_to complex_path and return }
      end

1 Ответ

0 голосов
/ 20 сентября 2018

Хм, это немного странно, но вы можете использовать пользовательские ключи для хэша Flash.

else
  @product.errors.keys.each do |err_key|
    flash[err_key] = @product.errors.full_messages_for(err_key).join(' ')
  end
  flash[:alert] = 'Unable to save Product.'
  redirect_to ....
end

Теперь, для следующего запроса, вы можете перебрать flash.keys, чтобы получить ошибки (вы должныигнорировать: alert o: keys keys).

Это действительно ужасно, но перенаправление после неудачного save еще страшнее ....; P

...