Lan*_*Lan 325 ruby-on-rails ruby-on-rails-3
我是Rails的新手,所以我目前的项目处于一种奇怪的状态.
我生成的第一件事是"电影"模型.然后我开始更详细地定义它,添加了一些方法等.
我现在意识到我应该生成它rails generate scaffold
来连接诸如路由,视图,控制器等的东西.
我试图生成脚手架,但我收到一个错误,说已存在同名的迁移文件.
现在为我的"电影"创建脚手架的最佳方式是什么?(使用导轨3)
Lee*_*vis 584
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
Run Code Online (Sandbox Code Playgroud)
如果您想为模型生成控制器支架,请参阅scaffold_controller
.为了清楚起见,这里的描述如下:
找到一个脚手架控制器及其视图.传递模型名称,CamelCased或under_scored,以及视图列表作为参数.控制器名称将作为模型名称的复数形式进行检索.
要在模块中创建控制器,请将模型名称指定为"parent_module/controller_name"之类的路径.
这会在app/controllers中生成一个控制器类,并调用帮助器,模板引擎和测试框架生成器.
要创建资源,你可以使用resource
生成器,并创建一个迁移,你也可以看到migration
生成器(参见,所有这些疯狂的模式).这些提供了创建缺失文件以构建资源的选项.或者你可以只运行rails generate scaffold
与--skip
选择跳过它存在的任何文件:)
我建议花些时间查看生成器内部的选项.他们是我认为在书籍等方面记录得非常好的东西,但它们非常方便.
tok*_*khi 65
很好的答案Lee Jarvis
,这只是命令,例如; 我们已经有一个名为User的现有模型:
rails g scaffold_controller User
Run Code Online (Sandbox Code Playgroud)
您可以使用scaffold_controller
并记住传递attributes
模型,否则将生成没有属性的脚手架.
rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string
Run Code Online (Sandbox Code Playgroud)
此命令将生成以下文件:
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
Run Code Online (Sandbox Code Playgroud)
在Rails 5中,您仍然可以运行
$rails generate scaffold movie --skip
Run Code Online (Sandbox Code Playgroud)
创建所有丢失的脚手架文件或
rails generate scaffold_controller Movie
Run Code Online (Sandbox Code Playgroud)
仅创建控制器和视图.
有关更好的解释,请查看rails scaffold
我在Ubuntu 20.04中开发Rails 6 API 应用程序时遇到了这个挑战。
我已经有了现有的模型,我需要为模型生成相应的控制器,并在控制器 params中添加它们允许的属性。
我是这样做的:
我用它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
Run Code Online (Sandbox Code Playgroud)
这为模型生成了相应的控制器,并在控制器 params中添加了它们允许的属性,包括外键属性。
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
Run Code Online (Sandbox Code Playgroud)
就这样。
我希望这有帮助
归档时间: |
|
查看次数: |
129798 次 |
最近记录: |