生成控制器

Rails 当然也为控制器提供了很多发生器。

你可以通过在 app 文件夹中运行此命令来生成新控制器

rails generate controller NAME [action action] [options]

注意:你也可以使用 rails g 别名来调用 rails generate

例如,要为 Product 模型生成控制器,你将运行 #index#show 操作

rails generate controller products index show

这将在 app/controllers/products_controller.rb 中创建控制器,同时指定你指定的操作

class ProductsController < ApplicationController
  def index
  end

  def show
  end
end

它还会在 app/views/中创建一个 products 文件夹,其中包含控制器操作的两个模板(即 index.html.erbshow.html.erb请注意扩展名可能因模板引擎而异,所以如果你使用 slim,例如,生成器将创建 index.html.slimshow.html.slim

此外,如果你指定了任何操作,它们也将添加到你的 routes 文件中

# config/routes.rb
get 'products/show'
get 'products/index'

Rails 为你创建了一个帮助文件,在 app/helpers/products_helper.rb 中,以及 app/assets/javascripts/products.jsapp/assets/stylesheets/products.css 中的资源文件。至于视图,生成器根据 Gemfile 中指定的内容更改此行为:即,如果你在应用程序中使用 CoffeescriptSass,则控制器生成器将生成 products.coffeeproducts.sass

最后,但并非最不重要的是,Rails 还为你的控制器,助手和你的视图生成测试文件。

如果你不希望为其创建任何这些,可以告诉 Rails 跳过它们,只需添加任何选项

--no---skip,像这样:

rails generate controller products index show --no-assets --no-helper

而发电机将跳过 assetshelper

如果你需要为特定的 namespace 创建一个控制器,请在 NAME 前添加它:

rails generate controller admin/products

这将在 app/controllers/admin/products_controller.rb 内创建你的控制器

Rails 还可以为你生成完整的 RESTful 控制器:

rails generate scaffold_controller MODEL_NAME # available from Rails 4
rails generate scaffold_controller Product