создание рельсовых лесов и проблема простых ссылок на внешние ключи - PullRequest
2 голосов
/ 11 марта 2011

Моя проблема, кажется, где-то в сгенерированных по умолчанию формах скаффолдов при использовании ссылок на внешние ключи в вашей модели.

Я подробно опишу последовательность поколений, которые я выполнил, прежде чем добрался до своей проблемы:

рельсы создают эшафот Название курса: текстовый дескриптор: текстовый URL: наклон строки: целочисленный рейтинг: число с плавающей запятой

рельсы генерируют эшафот Название события: текстовый деск: текстовое событие: дата курс: ссылки

rake db: migrate

..

На этом этапе я перехожу на страницу курсов и создаю новый курс и сохраняю его.Это прекрасно работает.

Затем я перехожу на страницу localhost: 3000 / events / new и пытаюсь создать новое событие, используя форму по умолчанию: Форма выглядит следующим образом: name: textbox desc: textbox eventdate:[заполнить виджет даты] course_id: textbox

Я заполняю поля некоторой информацией, а затем "1" в поле course_id, и нажимаю сохранить ошибку, возвращающую что-то с эффектом:

Ошибка (#xxxxxxxx) Ожидается, получена строка (#xxxxxxxx) ... Затем трассировка стека.

Итак, из того, что я вижу, я могу сказать, что мне не нравится, когда передается course_idкак строковое значение, но я не могу найти, где в структуре мне нужно получить это значение и преобразовать его в целое число.

Странно то, что записи целочисленных значений в другой таблице имеютнет проблем с конвертированием, просто кажется, что ссылка на Foreign_key вызывает проблемы.

В прошлом с rails я никогда не использовал тип "reference", и обычно я создавал Foreign_key пользователем maКороль их вручную в эшафот, так что мое поколение будет иметь course_id: integer вместо конечно: ссылки.Затем я вручную добавляю принадлежность_ в модель с этой точки.

В любом случае.Я мог бы сделать это по-старому, но я хотел получить некоторое представление о том, что делает Rails 3.0 с этим типом «ссылок».

1 Ответ

0 голосов
/ 23 марта 2011

В модели события у вас есть ссылка на объект курса (модель курса). когда вы пытаетесь создать новое событие, вы должны сделать это для определенного курса. Вы получаете сообщение об ошибке, потому что в форме не передается "курс" в рельсы.

что вы должны сделать: 1 -> выберите курс (вы можете использовать встроенный список в представлении new_event) 2 -> заполните форму и отправьте 3 -> это должно работать

если это не сработает, я рекомендую вам использовать частичное (new_event_view) в представлении course_show и передать ему идентификатор конечно, и оно будет работать.

PS: есть много способов сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...