我是Rails的新手,所以我当前的项目处于怪异状态。
我生成的第一批内容之一是“电影”模型。然后,我开始更详细地定义它,添加一些方法,等等。
我现在意识到我应该已经生成了它,rails generate scaffold
以连接诸如路由,视图,控制器等之类的东西。
我试图生成脚手架,但出现一个错误,说已经存在一个具有相同名称的迁移文件。
现在为我的“电影”创建脚手架的最佳方法是什么?(使用滑轨3)
我是Rails的新手,所以我当前的项目处于怪异状态。
我生成的第一批内容之一是“电影”模型。然后,我开始更详细地定义它,添加一些方法,等等。
我现在意识到我应该已经生成了它,rails generate scaffold
以连接诸如路由,视图,控制器等之类的东西。
我试图生成脚手架,但出现一个错误,说已经存在一个具有相同名称的迁移文件。
现在为我的“电影”创建脚手架的最佳方法是什么?(使用滑轨3)
Answers:
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)以及视图列表作为参数。检索控制器名称作为模型名称的复数形式。
要在模块内创建控制器,请将模型名称指定为类似“ parent_module / controller_name”的路径。
这将在app / controllers中生成一个控制器类,并调用帮助器,模板引擎和测试框架生成器。
要创建您的资源,您将使用resource
生成器,并且要创建迁移,您还可以看到migration
生成器(请参见,所有这种疯狂的模式都有)。这些提供了用于创建缺少的文件以构建资源的选项。或者你可以只运行rails generate scaffold
与--skip
选择跳过它存在的任何文件:)
我建议花一些时间查看生成器内部的选项。我觉得这些东西在书本上并没有得到很好的记录,但是它们非常方便。
rails generate scaffold_controller MyModel
确实会生成视图层,但是它不包括模型属性(表列),因此您必须手动添加这些属性。有人知道解决办法吗?我在Rails 3.2.8上。
generate scaffold
,如果你有一个模型,但你想有一个支架控制器,并添加到您想要的模型新的属性scaffold_generator
,然后migration
用领域你改变
在Rails 5中,您仍然可以运行
$rails generate scaffold movie --skip
创建所有缺少的脚手架文件或
rails generate scaffold_controller Movie
创建控制器并仅查看。
有关更好的说明,请查看滑轨脚手架
您可以利用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