为啥“g 控制器”也不创建视图文件?
Posted
技术标签:
【中文标题】为啥“g 控制器”也不创建视图文件?【英文标题】:Why doesn't "g controller" also create view file?为什么“g 控制器”也不创建视图文件? 【发布时间】:2016-02-07 04:19:10 【问题描述】:我见过一些 Rails 示例,其中生成控制器还会创建视图文件(不仅仅是视图文件夹)。
在Rails Guide 的6.4 部分中,它显示了一个空的视图文件夹并且没有视图文件。这就是我的本地安装正在做的事情。我没有得到任何视图文件。
有没有办法让 Rails 在运行rails g controller ...
时自动生成视图文件?或者,该人是否更有可能手动创建了视图文件并且没有显示该部分?
【问题讨论】:
application.rb 与该问题无关;) 【参考方案1】:改用rails generate scaffold,它将在一次操作中为您生成模型、视图和控制器文件。
如果您想为新的模型、视图和控制器创建 资源在单个操作中,脚手架是工作的工具。
例如:
rails g scaffold Post name:string title:string content:text
但是,如果您真的想使用 rails g controller
并为您创建视图文件,那么您必须为您的控制器指定 action
名称:
rails g controller Controllername index show edit update
这样,它将为这四个操作创建视图文件:app/views/.../index.html.erb
、app/views/.../edit.html.erb
。 . .等等
但是,看看你的情况,你应该使用脚手架,因为它会为你做很多工作。
【讨论】:
【参考方案2】:要生成基本的视图和控制器操作,您应该运行例如:rails g controller Controllername index show
将创建索引和显示操作的基本视图。
【讨论】:
【参考方案3】:如果我使用 RubyMine(新项目 > Rails Api 项目)创建一个 api 项目,我也会遇到同样的问题。第一个项目是在 cli (rails new) 上创建的,在 RM 中是第二个:
C:\Projekte\railstest3>ruby bin/rails generate controller Welcome index
create app/controllers/welcome_controller.rb
route get 'welcome/index'
invoke erb
create app/views/welcome
create app/views/welcome/index.html.erb
invoke test_unit
create test/controllers/welcome_controller_test.rb
invoke helper
create app/helpers/welcome_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/welcome.coffee
invoke scss
create app/assets/stylesheets/welcome.scss
C:\Projekte\railstest3>cd..
C:\Projekte>cd railstest
C:\Projekte\railstest>ruby bin/rails generate controller Welcome4 index
create app/controllers/welcome4_controller.rb
route get 'welcome4/index'
invoke test_unit
create test/controllers/welcome4_controller_test.rb
C:\Projekte\railstest>rails -v
Rails 5.0.2
解决方案是在 RM 中创建新的“应用程序项目”而不是新的“Api 项目”。
【讨论】:
以上是关于为啥“g 控制器”也不创建视图文件?的主要内容,如果未能解决你的问题,请参考以下文章