Поскольку вы используете одну форму для создания всех типов персонажей, вам также следует придерживаться одного контроллера, чтобы вам не нужно было добавлять какие-либо дополнительные маршруты.
Атрибут type на самом деле не тот, что выследует назначить экземпляру вручную, его следует установить автоматически, выбрав тип создаваемой модели.
Я не знаю, как он выглядит в вашем контроллере и представлениях, но вы можете извлечь тип модели длясоздайте так:
class_type = params[:type].constantize
@person = class_type.new
С другой стороны, если атрибут type вложен в form_for в вашем представлении, то атрибут type, вероятно, отправляется в контроллер как params [: person] [: type] в этом случае он должен быть удален из хэша: person, прежде чем он будет использован для создания нового экземпляра.Возможно, что-то вроде этого:
class_type = params[:person].delete(:type).constantize
@person = class_type.new(params[:person])