生成控制器
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.erb 和 show.html.erb,請注意副檔名可能因模板引擎而異,所以如果你使用 slim,例如,生成器將建立 index.html.slim 和 show.html.slim )
此外,如果你指定了任何操作,它們也將新增到你的 routes 檔案中
# config/routes.rb
get 'products/show'
get 'products/index'
Rails 為你建立了一個幫助檔案,在 app/helpers/products_helper.rb 中,以及 app/assets/javascripts/products.js 和 app/assets/stylesheets/products.css 中的資原始檔。至於檢視,生成器根據 Gemfile 中指定的內容更改此行為:即,如果你在應用程式中使用 Coffeescript 和 Sass,則控制器生成器將生成 products.coffee 和 products.sass。
最後,但並非最不重要的是,Rails 還為你的控制器,助手和你的檢視生成測試檔案。
如果你不希望為其建立任何這些,可以告訴 Rails 跳過它們,只需新增任何選項
--no- 或 --skip,像這樣:
rails generate controller products index show --no-assets --no-helper
而發電機將跳過 assets 和 helper
如果你需要為特定的 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