Progateの Ruby on Railsコースをひと通り完了しました。
復習のため、再び道場コース(学習コースと違ってコードをゼロから書いていく演習コース)を繰り返しながら概要をザクッとメモ書きしておきます。(自分用メモなのでザックリと・・・)
アプリの雛形を作成
railsコマンドを実行!
rails new tweet_app
これで必要なファイルがモリモリ出来上がります。
その後、「rails server」コマンドを実行することでサーバが起動し、Webブラウザから「localhost:3000」でアクセス可能になります。簡単!
トップページの作成
rails g controller コントローラ名(home) アクション名(top)
上記コマンドでコントローラとビューに必要なファイルがマルッと出来上がります。
続けてapp/view/home/top.html.erbファイルを表示する内容に編集していきます。ちなみに、ここで記述するのはbodyタグの内容です。
また、cssファイルは app/assets/stylesheets/コントローラ名.scssを編集します。
ルーティングの変更
現状、TOPページのURLが「/home/top」になっているので、「/」でアクセスできるようにルーティング変更します。
config/routes.rbを編集して、
get "home/top" => "home#top"
を
get "/" => "home#top"
に変更すればOK。
aboutページの作成
homeコントローラは作成済みなので、railsコマンドは使わず、viewファイル(view.html.erb)を手作業で作成します。
続けてルーティングに 「get “/about” => “home#about”」を追記、コントローラファイルにaboutアクション(=関数)を追記します。
アプリケーション共通レイアウトの変更
views/layouts/application.html.erbを編集します。このファイル中の 「<%= yeald %>」が各ビューの内容に置き換わるという点がキモっぽい。
ここにはアプリケーション共通でページヘッダーに表示するリンクなどを記述します。
データベーステーブルの作成
rails g model Post content:text
上記コマンドで、Postテーブルにtext型のcontentカラムを作成します。実際には、この後に「rails db:migrate」コマンドを実行することでデータベースに反映されます。
データベースができたので、コンソール(rails console)からデータを投入してみます。
post = Post.new(content: "あああああ") post.save
ここでpost.saveをしないと反映されないので注意。
なお、作成したテーブルには「id」「created_at」「updated_at」のカラムが自動的に作成されます。(※「id」が主キーになる)
投稿一覧ページの作成
rails g controller Posts index
上記コマンドでコントローラとビューをマルッと作成し、コントローラにて @post にデータベースから取得した内容をセットします。(先頭に@を付けることでビューでもアクセス可能に)
def index @posts = Post.all.order(created_at: :desc) end
order()はレコードの並び順を指定するメソッドです。(:descが降順、:ascが降順)
つづけて、app/view/posts/index.html.erbを編集して@postsの内容を一覧表示します。(以下のようにeach文を使う)
<% @posts.each do |post| %> <%= post.content %> <% end %>
投稿詳細ページの作成
投稿一覧から投稿内容に貼られているリンクをクリックすると、投稿詳細ページ(show.html.erb)を表示するようにします。
まずはルーティングに「 get “posts/:id” => “posts#show” 」を追加します。
これでコントローラ側で「 params[:id] 」として投稿を絞り込むためのID(Postテーブルのidカラム)を取得できるようになります。
つづけてコントローラ側でデータベースから取得する内容を@postに格納します。(find_byを使うことでレコードを検索)
def show @post = Post.find_by(id: params[:id]) end
投稿詳細ページには @post.content と @post.created_at を表示します。
(今は項目が少ないけど、後々ここに色々と表示するようになっていきます)
一覧表示では @postsと複数形、詳細表示では@postと単数形、と使い分けが今後も出てきます。
ここまでで道場コース(その1)が完了です。つづく。
コメント