rails scaffold生成和简单的外键引用问题

时间:2011-03-11 15:16:00

标签: ruby-on-rails-3

在模型中使用外键引用时,我的问题似乎出现在默认生成的脚手架形式中。

在我遇到问题之前,我会详细说明我跑过的几代人:

rails generate scaffold课程名称:text desc:text url:string slope:integer rating:float

rails generate scaffold事件名称:text desc:text eventdate:date course:references

rake db:migrate

...

此时我会进入课程页面并创建一个新课程并保存。这很好。

然后我转到localhost:3000 / events / new页面,我尝试使用默认表单创建一个新事件: 表格是这样的: 名称:文本框 desc:文本框 eventdate:[填写日期小部件] course_id:textbox

我在字段中填入一些信息,然后在course_id字段中输入“1”,并点击保存错误返回的内容为:

错误(#xxxxxxxx)预期,得到字符串(#xxxxxxxx)...然后是堆栈跟踪。

所以从我所看到的我可以告诉我,我不认为它喜欢course_id作为字符串值传递,但我似乎无法找到框架中我需要检索该值并转换它的位置到整数。

奇怪的是,另一个表中的整数值条目没有转换问题,似乎foreign_key引用给它带来了问题。

过去使用rails我从来没有使用过“reference”类型,而且我通常通过在scaffold中手动创建foreign_key,就像我这一代人将使用course_id:integer而不是course:references。然后我从那一点手动将belongs_to添加到模型中。

反正。我可以用旧的方式去做,但是我希望能够深入了解Rails 3.0使用这种“引用”类型做什么。

1 个答案:

答案 0 :(得分:0)

我在事件模型中引用了课程对象(课程模型)。当您尝试创建新事件时,您必须针对特定课程执行此操作。您收到错误,因为表单中没有“课程”传递给rails。

你要做的事: 1 - >选择课程(您可以在new_event视图中使用嵌入列表) 2 - >填写表格并提交 3 - >它应该工作

如果它不适合你,我会建议你在course_show视图中使用部分(new_event_view)并传递给它的id当然会有效。

PS:有很多方法可以做到这一点。

相关问题