2008-03-30

Rails 2.0: Scaffold

关键字: rails scaffold

今天在看Agile.Web.Development.with.Rails.2nd.Edition
照着书写 Chapter 6 的代码

class AdminController < ApplicationController
scoffold Product;
end

运行报错。

undefined method `scoffold' for AdminController:Class

运行 gem list 查看当前版本

rails (2.0.2, 1.2.6)

查了网上的信息, 说是rails2.0把动态的scaffold去掉了。书写的内容比当前运行的2.0.2rails早。真郁闷


怎么办。有一种办法就是把版本降低。还有说装插件,但是我试了一下,发现没有反应,依然提示undefined method ,不知道是否是操作有问题。使用netbeans插件安装。

 

具体参考http://xudayu.blog.51cto.com/187984/67326

 

第三个办法在


http://leonardoborges.com/writings/2007/12/21/rails-20-scaffold/  找到的 

 

script\generate scaffold Contact name:string email:string

 

原文如下:

 写道
Following the Rails 2.0 hype, I’ve been playing around with it and decided to share a first impression: Scaffolding is gone!
But wait, before you knock your head against the wall, let me tell you something: I lied
Scaffolding is not really gone. It’s just changed a bit.
How can I tell? Well, as a good developer I thought: “I’ll just create a scaffold with the new version and see what’s different”
I fired up a terminal, created a news rails application and generated a new model:
$ script/generate model Contact name:string email:string - yes you can do this in rails 2.0, and these fields get into your model’s migration!
Now the I have a new model, it’s time for a controller to manage it:
$ script/generate controller Contacts
So your controller would look something like this huh?
class ContactsController < ApplicationController
scaffold :contact
end
Well, too bad! The method scaffold is gone from ActionController::Base! And I’m not lying this time!
Now that the dynamic scaffold is gone, we’re left with the static one.
Ok, let’s try it then:
$ script/generate scaffold contact
And it won’t work again! At the end of the output, you will get something like this:
Another migration is already named create_contacts: db/migrate/001_create_contacts.rb
It really means that if your model is meant to be used by a scaffold, you better generate it in the same line. It will fail, afaik, if the model previously existed. Destroy yout model and controller, and execute the following:
$ script/generate scaffold Contact name:string email:string
Done! Just run your migrations, startup your server and your new scaffold in rails 2.0 will be working gracefully!
It took me a while to discover this changes because I didn’t find it well documented. But maybe I was not looking in the right places.
 

生成

 

这里也有说明。http://www.ruby-lang.org.cn/forums/viewthread.php?tid=2786 第四楼

 

 写道
现在Rails2.0的scaffold是这样的语法:
script/generate scaffold ModelName [field:type  field:type]

去掉了1.2前使用的语法:
script/generate scaffold ModelName [ControllerName] [action, ...]

现在就不能像以前那样建了model和controller后再用scaffold了。

  

评论
wutao8818 2008-04-24
看着老版书,却用着2.0。真的很痛苦。不知道哪里有全系列的2.0教程
marshluca 2008-04-24
我出现了同样的问题
发表评论

您还没有登录,请登录后发表评论

wutao8818
搜索本博客
我的相册
B72616b1-874a-316f-9919-fa398e490c9f-thumb
safari
共 8 张
最近加入圈子
存档
最新评论