RTTI не существует для C++.
Это просто неправильно. На самом деле самый термин “RTTI” был введен стандартом C++. С другой стороны, RTTI не идет очень далеко в реализации отражения.
Думаю, я понимаю, почему ошибки не передаются обратно пользователю.
Проблема в том, что вы отправляете перенаправление пользователю в случае сбоя действия, а не просто выполняете рендеринг, что означает, что вы теряете все переменные, которые вы установили для использования в запросе. Вместо того, чтобы добавлять ошибки во флэш-память, просто визуализируйте страницу редактирования и установите для флэш-памяти обычное сообщение, и все должно быть в порядке.
Например:
def add_equip
@reservation = Reservation.find(params[:id])
@addedEquip = Equip.find(params[:equip_id])
respond_to do |format|
if @reservation.add_equip(@addedEquip)
flash[:notice] = "Equipment was added"
format.html { redirect_to(edit_reservation_path(@reservation)) }
else
flash[:error] = 'Error adding equipment'
format.html { render :action => :edit }
end
end
end
Теперь вы можете продолжать использовать обычные помощники формы для отображения сообщений об ошибках.
Кроме того, небольшое предложение для кода модели, попробуйте использовать i18n, когда это возможно (в том числе для флэш-сообщений в контроллер). Хотя это в основном личное предпочтение, оно дает логический дом всем вашим сообщениям и конкретному тексту,
Вы также можете отредактировать сценарий mvim
и найти определение opts
. Измените его на что-то вроде:
opts="--remote-tab"
или
opts="--remote-tab-silent"
или
opts="--remote-tab-wait"
В зависимости от вашего вкуса, конечно ...; -)