为什么Scaffolding在Ruby on Rails上不起作用?

时间:2010-04-15 11:01:24

标签: ruby-on-rails scaffolding

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

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"}

知道为什么吗?

3 个答案:

答案 0 :(得分:2)

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

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

生成脚手架视图(在app / views中),控制器(app / controllers),标准测试(在test /中),以及关键的脚手架工作所需的路径。

我相信rails dev团队带走了旧的语法(“脚手架:资源”),因为没有真正的应用程序会使脚手架不受影响,即。你总是需要某种定制。使用新语法,可以保持不变,但也可以更容易地进行自定义。

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

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

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

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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