生成控制器

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