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