为什么 "g controller" 不创建视图文件?

Why doesn't "g controller" also create view file?

我看过一些 Rails 示例,其中生成控制器的同时还创建了视图文件(不仅仅是视图文件夹)。

Rails Guide6.4 节中,它显示了一个空视图文件夹并且没有视图文件。这就是我的本地安装正在做的事情。我没有得到任何视图文件。

有什么方法可以让Rails在运行rails g controller ...时自动生成视图文件吗?或者,更有可能是该人手动创建了视图文件而没有显示该部分?

改用rails generate scaffold,它将在一次操作中为您生成模型、视图和控制器文件。

If you want to create the models, views, and controllers for a new resource in a single operation, scaffolding is the tool for the job.

例如:

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.erbapp/views/.../edit.html.erb。 . .等等

但是,根据您的情况,您应该使用脚手架,因为它会为您做很多工作。

要生成基本视图和控制器操作,您应该运行例如:rails g controller Controllername index show

将创建索引和显示操作的基本视图。

如果我使用 RubyMine 创建一个 api 项目(新项目 > Rails 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 中创建新的 "Application Projects" 而不是新的 "Api Project"。