To generate a controller (for example Posts), navigate to your project directory from a command line or terminal, and run:
$ rails generate controller Posts
You can shorten this code by replacing generate with g, for example:
$ rails g controller Posts
If you open up the newly generated app/controllers/posts_controller.rb you'll see a controller with no actions:
class PostsController < ApplicationController
# empty
end
It's possible to create default methods for the controller by passing in controller name arguments.
$ rails g controller ControllerName method1 method2
To create a controller within a module, specify the controller name as a path like parent_module/controller_name. For example:
$ rails generate controller CreditCards open debit credit close
# OR
$ rails g controller CreditCards open debit credit close
This will generate the following files:
Controller: app/controllers/credit_cards_controller.rb
Test: test/controllers/credit_cards_controller_test.rb
Views: app/views/credit_cards/debit.html.erb [...etc]
Helper: app/helpers/credit_cards_helper.rb
A controller is simply a class that is defined to inherit from ApplicationController.
It's inside this class that you'll define methods that will become the actions for this controller.