Rails風味のRuby(その1)
WED(WeekEndDevelopers)のぽんたです。
開発スキルのないSIerからソフトウェアスキルを取得するため、WEDでモノづくりを計画しています。詳しい経緯はここ
※現在はruby on railsのチュートリアル(ここから)を進めていってます。
今回から4章に入ります。この章ではRubyの基礎知識を学んでいきます。
まず、第3章で作ったアプリを使うのは変更ないが、branchを切って作業をします。
まずbranchをきります。これはいつも通りですよね。ついでにきちんとbranchが切れているのかも確認してみます。
$ git checkout -b rails-flavored-ruby Switched to a new branch 'rails-flavored-ruby' $ git branch master * rails-flavored-ruby static-pages
application.html.erbの更新
$ cat app/views/layouts/application.html.erb <!DOCTYPE html> <html> <head> <title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title> <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <%= yield %> </body> </html>
railsのビューでは膨大の数の組み込み関数が使えるが、それだけでなく新しく作成することもできます。 これをカスタムヘルパーといいます。
今回はページタイトルが正しく表示されない問題を解決するために、full_titleというヘルパーを作成します。
base_titleを設定しておき、titleが空だった場合はbase_titleを表示する
$ cat app/helpers/application_helper.rb module ApplicationHelper # ページごとの完全なタイトルを返します。 def full_title(page_title = '') base_title = "Ruby on Rails Tutorial Sample App" if page_title.empty? base_title else page_title + " | " + base_title end end end
full_titleヘルパーでfull_titleを定義したので(def full_title(page_title = '')) application.html.erbのタイトルを変更してやる
こういう書き方はあまりわからんですが、まぁそういうもんなんだと今は理解しておきます。
$ cat app/views/layouts/application.html.erb <!DOCTYPE html> <html> <head> <title><%= full_title(yield(:title)) %></title> <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <%= yield %> </body> </html>
static_pages_controller_test.rbをHomeページタイトル確認用にテストを更新する
$ cat test/controllers/static_pages_controller_test.rb require 'test_helper' class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should get home" do get static_pages_home_url assert_response :success assert_select "title", "Ruby on Rails Tutorial Sample App" end test "should get help" do get static_pages_help_url assert_response :success assert_select "title", "Help | Ruby on Rails Tutorial Sample App" end test "should get about" do get static_pages_about_url assert_response :success assert_select "title", "About | Ruby on Rails Tutorial Sample App" end end
テストスイートを実行して、テストが失敗することを確認します
$ rails test : : 3 runs, 6 assertions, 1 failures, 0 errors, 0 skips
ページタイトルをカスタマイズせずに表示するHomeページのためhome.html.erbを修正する
$ cat app/views/static_pages/home.html.erb <h1>Sample App</h1> <p> This is the home page for the <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> sample application. </p>
ここでテストはパスするはずなので実行してみる
$ rails test 3 runs, 6 assertions, 0 failures, 0 errors, 0 skips
無事OKになったので今回はここまでです。次回は4章の続きをします。rubyのいろいろを学んでいきます!では^^