生成控制器
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