为啥“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.erbapp/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 控制器”也不创建视图文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥视图的阴影被创建为内部

为啥在数据库创建的视图里没有数据啊

为啥我以编程方式创建的视图会忽略其约束?

为啥 Rails 不自动生成视图文件?

为啥异步不会停止重新创建列表视图?

为啥即使我使用简单的(self.title =“title”)视图控制器的标题也不居中