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