我是Rails的新手,所以我目前的项目处于一个奇怪的状态。
我最先生成的东西之一是“电影”模型。然后我开始更详细地定义它,添加了一些方法,等等。
我现在意识到我应该用rails生成脚手架来连接路由、视图、控制器等。
我试图生成脚手架,但我得到了一个错误,说一个同名的迁移文件已经存在。
现在我为我的“电影”创建脚手架的最好方法是什么?(使用轨道3)
我是Rails的新手,所以我目前的项目处于一个奇怪的状态。
我最先生成的东西之一是“电影”模型。然后我开始更详细地定义它,添加了一些方法,等等。
我现在意识到我应该用rails生成脚手架来连接路由、视图、控制器等。
我试图生成脚手架,但我得到了一个错误,说一个同名的迁移文件已经存在。
现在我为我的“电影”创建脚手架的最好方法是什么?(使用轨道3)
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。为了清晰起见,下面是对它的描述:
stub出一个脚手架控制器及其视图。传递模型名称, camelcases或under_scores,以及一个视图列表作为参数。 控制器名称作为模型的多元化版本检索 的名字。 要在模块中创建控制器,请将模型名指定为 比如'parent_module/controller_name'。 这将在app/controllers中生成一个控制器类,并调用helper, 模板引擎和测试框架生成器。
要创建资源,您可以使用资源生成器,要创建迁移,您还可以查看迁移生成器(请注意,所有这些疯狂的操作都有一个模式)。这些选项提供了创建缺失文件以构建资源的选项。或者你也可以使用——skip选项来跳过任何存在的文件:
我建议花些时间看看生成器内部的选项。我觉得这些东西在书中没有很好的记录,但它们很方便。
对于那些使用现有数据库启动rails应用程序的人来说,有一个叫做schema_to_scaffold的很酷的gem来生成一个scaffold脚本。 输出:
Rails脚手架用户fname:字符串lname:字符串bdate:日期email:字符串encrypted_password:字符串
从你的图式中。我们重新命名的模式。检查它
您可以使用scaffold_controller并记住传递模型的属性,否则脚手架将在没有属性的情况下生成。
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
在Rails 5中,您仍然可以运行
$rails generate scaffold movie --skip
创建所有缺失的脚手架文件或
rails generate scaffold_controller Movie
只创建控制器和视图。
为了得到更好的解释,请查看导轨脚手架
我在Ubuntu 20.04中开发Rails 6 API应用程序时遇到了这个挑战。
我已经有了现有的模型,我需要为模型生成相应的控制器,并在控制器参数中添加它们的允许属性。
我是这样做的:
我使用rails generate scaffold_controller来完成它。
我简单地运行了以下命令:
rails generate scaffold_controller School name:string logo:json motto:text address:text
rails generate scaffold_controller Program name:string logo:json school:references
这将为模型生成相应的控制器,并在控制器参数中添加它们的允许属性,包括外键属性。
create app/controllers/schools_controller.rb
invoke test_unit
create test/controllers/schools_controller_test.rb
create app/controllers/programs_controller.rb
invoke test_unit
create test/controllers/programs_controller_test.rb
这是所有。
我希望这对你们有帮助