0

我创建了一个控制器和一个模型。控制器称为“Admin”,模型称为“Album”。我用正确的信息编辑了 database.yml 并执行了 rake db:migrate 命令,该命令没有返回任何错误,并且确实迁移了 schema.rb 中的数据库。在控制器内部我写道:

class AdminController < ApplicationController

  scaffold :album

end

接下来我启动了我的服务器并访问了http://localhost:3000/admin但没有看到典型的 CRUD 页面,我收到以下错误:

app/controllers/admin_controller.rb:3

Request

Parameters: 

None

Show session dump

--- 
flash: !map:ActionController::Flash::FlashHash

{}

Response

Headers: 

{"cookie"=>[],
 "Cache-Control"=>"no-cache"}

知道为什么吗?

4

3 回答 3

2

脚手架的这种语法已经被弃用了很长一段时间。如今,rails(2.x 版本)使用以下方法来搭建资源:

script/generate scaffold Album title:string date:date ...

这会生成脚手架视图(在 app/views 中)、控制器(app/controllers)、标准测试(在 test/ 中),以及至关重要的是,使脚手架工作所需的路线。

我相信 Rails 开发团队取消了旧的语法(“scaffold :resource”),因为没有真正的应用程序不会让脚手架保持原样,即。你总是需要某种定制。使用新语法,您可以保持原样,但也更容易定制。

如果您确实需要将控制器命名为 admins,则可以在生成脚手架后更改文件 config/routes.rb。但是,这没有任何意义:为什么创建新专辑的 URI 应该称为“/admins/new”?

如果您尝试为相册应用程序创建管理区域,您可能正在寻找命名空间(因此您可以在“管理”命名空间内拥有多个不同的资源、控制器和视图)。要在 admin 命名空间中创建相册资源,请编写:

script/generate scaffold Admin/Album title:string date:date

在这种情况下,您的控制器将可以通过http://host/admin/albums访问。

于 2010-04-15T12:13:14.043 回答
0

script/generate 命令似乎不起作用,必须有人提供 ./script/generate ,我认为这是一个 linux 目录问题,你必须明确地说你是从当前目录(./)开始的。希望这可以帮助某人避免挠头

于 2012-04-20T07:57:46.893 回答
0

嗯,

通常你会有一个控制器和一个名为 Admin 的模型,同样的事情是关于专辑,

看看这个快速的屏幕截图是如何使用脚手架完成博客的;

创建网络博客

于 2010-04-15T11:10:15.650 回答