Today, I continued to work on my code-along with my bootcamp to duplicate a todo list from this website.
I learned how to create a site controller. A site controller is perfect if you want a main page for your Ruby on Rails project. It is simple to create, first run the following code in your terminal:
rails g controller site index
then add the following code to your
Then edit your
app/views/sites/index.html.erb with 'hello world' and visit http://localhost:3000/ in your browser.
You have now set up a site controller for your rails website.
Okay so we have our main page set up, whats next?
The website allows people to be able to create lists. Then they should be able to add items to those lists. They should be able to navigate many lists and see each lists items.
So next step is to create lists that will be able to have items, which meant a model and controller is necessary for lists.
The best generator for that is the resource generator.
rails generate resource list name
That generated the following:
invoke active_record create db/migrate/20200718235127_create_lists.rb create app/models/list.rb invoke test_unit create test/models/list_test.rb create test/fixtures/lists.yml invoke controller create app/controllers/lists_controller.rb invoke erb create app/views/lists invoke test_unit create test/controllers/lists_controller_test.rb invoke helper create app/helpers/lists_helper.rb invoke test_unit invoke assets invoke scss create app/assets/stylesheets/lists.scss invoke resource_route route resources :lists
In addition, it created the following List table in the db folder:
class CreateLists < ActiveRecord::Migration[6.0] def change create_table :lists do |t| t.string :name t.timestamps end end end
The table looks correct so next run,
rails db:migrate and then check run the console to make sure the database can be edited properly.
List.create(:name => "FirstList")
Great now we can update the
config/routes.rb so that the main page will be able to see lists. Add the following code to the routes.rb
Now update your
app/controllers/lists_controller.rb with the following method
def index @lists = List.all end
and update your
<ul> <% @lists.each do |list| %> <li> <div class="view"> <label> <%= link_to list.name, list_path(list) %> </label> </div> </li> <% end %> </ul>
Now visit http://localhost:3000/lists and you should be able to see all the lists.
Tomorrow I will give the steps for creating items for the lists. :)
Thanks for reading!