自分の手で未来を創るーlav0

自分のために、誰かのために、今ここにないもの、もっと良くしたいもの、何でも自分の手で創っていく。そして、作ったものを公開していきます

Rails 6.0 でアプリを開発 基本の流れ②

rails 6.0は導入し、基本開発部分は同じだと思うので反復するためのメモその2。

f:id:kslabo51:20200211110730j:plain

 

1.アクションをgetして正常に動作することを確認

f:id:kslabo51:20200211095925p:plain

※画像ではすでに名前付きにしていることに注意

 

2.タイトルの設定

①各ページにタイトルを設定

②yeildとprovideで各ページからタイトルを受け渡しする

view/top_pages/home.html.erb

<% provide(:title, "Home") %>

view/layouts/application.html.erb

<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>

※自分のコードはすでに進んでいるためrails tutorialから抜粋させていただきました。

 

3.ルーティングを設定

①rootをtop_pages#homeに変更

②root_urlに送信できているかのテストを追加

 

4.タイトルに基本タイトルを与える(full_titleヘルパーの作成)

f:id:kslabo51:20200211101038p:plain

①各ページからタイトルを与えられないときはbase_titleを与える条件付け

②view/layouts/application.html.erbから呼び出し

f:id:kslabo51:20200211101303p:plain

※その下のrenderは後に行う作業なので無視で

 

5.header、footer、rails_defaultをパーシャル化する

①いったん、view/layouts/application.html.erb内にheaderとfooterを作成し、ナビゲーションバーなど最低限で設置(画面構成は後でいじった方が早かった)

②各パーシャルに分ける

header

f:id:kslabo51:20200211102332p:plain

footer

f:id:kslabo51:20200211102347p:plain

head内のtag系をまとめたもの

f:id:kslabo51:20200211102356p:plain

③renderでレスポンスの出力

f:id:kslabo51:20200211102042p:plain



6.routingファイルを名前付きルートに変更

①get 'top_pages/help' → get '/help', to: 'top_pages#help'に書き換え

f:id:kslabo51:20200211102734p:plain

②ここでテストも名前付きルートに変更する(root_url →root_path)

f:id:kslabo51:20200211095925p:plain

※1で使用した画像と同じ

 

7.sassを使用するための準備

javascript/stylesheets/application.scss内に読み込みたいファイルインポート

f:id:kslabo51:20200211103356p:plain

javascript/stylesheets/_custom.scssを作成しその中に記述

f:id:kslabo51:20200211103656p:plain

 

7-2.もしassets/stylesheets内のcssかscssファイルを読み込みたい場合

①config/webpack/webpacker.ymlファイル内に下記を記入

f:id:kslabo51:20200211104057p:plain

javascript/stylesheets/application.scss内に読み込みたいファイルインポート

f:id:kslabo51:20200211104301p:plain

③app/assets/stylesheets/top_pages.scss内にスタイルを記述

 

8.統合テストの作成(リンクのテスト)

$ rails g integration_test site_layout

コードを記述

f:id:kslabo51:20200211104603p:plain

※上記のfull_tiltleのテストは下記9.をした後にテスト可能なので注意

$ rails test:integration

 

※エラー情報

Error:
SiteLayoutTest#test_layout_links:
NoMethodError: assert_template has been extracted to a gem. To continue using it,
add `gem 'rails-controller-testing'` to your Gemfile.
test/integration/site_layout_test.rb:7:in `block in <class:SiteLayoutTest>'

→Gemファイルにgem 'rails-controller-testing'を追加しbundle installで解決

 

9.テスト環境でApplicationヘルパーを使用できるようにする

①test/test.helper.rbに下記を追加

f:id:kslabo51:20200211105332p:plain

②full_titleヘルパーの単体テスト

f:id:kslabo51:20200211105704p:plain

 

10.Users コントローラーの作成

$ rails g controller Users new

※newアクションだけひとまず作成

 

11.ユーザー登録ページへのルートの設定

f:id:kslabo51:20200211110004p:plain

 

12.トップページにユーザー登録ページの入り口を作成

f:id:kslabo51:20200211110142p:plain

 

13.Usersコントローラーのてすとも名前付きルートに変更

 

この辺で一旦プッシュ

 

参考にさせていただいたサイト

第3章 ほぼ静的なページの作成 - Railsチュートリアル

Ruby on Rails 6 with Webpacker and Bootstrap - Adrian Teh - Medium