模型已经存在时,如何运行`rails generate scaffold`?
我是Rails新手,所以我目前的项目处于一个奇怪的状态。
我产生的第一件事就是一个“电影”模型。 然后我开始更详细地定义它,添加了一些方法等
我现在意识到我应该用rails generate scaffold
来连接路由,视图,控制器等等。
我试图生成脚手架,但我得到一个错误,说已经存在一个具有相同名称的迁移文件。
现在为我的“电影”创build脚手架的最好方法是什么? (使用导轨3)
TL; DR : rails g scaffold_controller <name>
即使您已经有了一个模型,仍然可以使用rails generate
选项生成必要的控制器和迁移文件。 如果你运行rails generate -h
你可以看到所有可用的选项。
Rails: controller generator helper integration_test mailer migration model observer performance_test plugin resource scaffold scaffold_controller session_migration stylesheets
如果您想为您的模型生成控制器脚手架,请参阅scaffold_controller
。 为了清楚起见,以下是对此的描述:
挖出一个脚手架控制器和它的意见。 传递模型名称,包括CamelCased或under_scored,以及视图列表作为参数。 控制器名称是作为型号名称的复数版本检索的。
要在模块中创build控制器,请将模型名称指定为“parent_module / controller_name”之类的path。
这在应用程序/控制器中生成一个控制器类,并调用助手,模板引擎和testing框架生成器。
要创build资源,您需要使用resource
生成器,并创build迁移,您还可以看到migration
生成器(请参阅这种疯狂的模式)。 这些提供了选项来创build缺less的文件来构build资源。 或者,您可以运行rails generate scaffold
与--skip
选项来跳过任何存在的文件:)
我build议花一些时间看看发电机内的选项。 他们是我不觉得在书籍等方面logging非常好,但他们非常方便。
Lee Jarvis
很好的回答,这只是一个命令而已; 我们已经有了一个名为User的现有模型:
rails g scaffold_controller User
对于使用现有数据库启动rails应用程序的人来说,有一个名为schema_to_scaffold
的酷gem来生成一个脚手架脚本。 它输出:
rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
从您的schema.rb
我们您的重命名的schema.rb.
核实
这个命令应该做的伎俩:
$ rails g scaffold movie --skip
您可以使用scaffold_controller
并记住传递模型的attributes
,否则脚手架将会生成没有属性。
rails g scaffold_controller User name email # or rails g scaffold_controller User name:string email:string
这个命令将会生成以下文件:
create app/controllers/users_controller.rb invoke haml create app/views/users create app/views/users/index.html.haml create app/views/users/edit.html.haml create app/views/users/show.html.haml create app/views/users/new.html.haml create app/views/users/_form.html.haml invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke jbuilder create app/views/users/index.json.jbuilder create app/views/users/show.json.jbuilder