見出し画像

railsチュートリアル魔改造編 第24章 ヘルプ・お問い合わせ・魔改造とは・ログアウト魔改造


第24章 ヘルプ・お問い合わせ・魔改造とは・ログアウト魔改造編

ヘルプ・お問い合わせ・魔改造とは・ログアウトを魔改造していきます。

いつものようにトピックブランチを作成します。

cd ‾/environment/sample_app
git checkout -b rails-makaizou-24

24.1 ヘルプ・お問い合わせ・魔改造とは・ログアウトはどこから飛ぶ?

ヘルプ
/sample_app/app/views/layouts/_header.html.erb
/sample_app/app/views/static_pages/help.html.erb

お問い合わせ
/sample_app/app/views/static_pages/contact.html.erb
/sample_app/app/views/layouts/_footer.html.erb

魔改造とは
/sample_app/app/views/layouts/_footer.html.erb
/sample_app/app/views/static_pages/about.html.erb

ログアウト
/sample_app/app/views/layouts/_header.html.erb
/sample_app/app/controllers/sessions_controller.rbのdestroyコントローラ

24.2 ヘルプ魔改造

/sample_app/app/views/static_pages/help.html.erbを修正

24.3 お問い合わせ魔改造

/sample_app/app/views/layouts/_footer.html.erbを修正

24.4 魔改造とは魔改造

/sample_app/app/views/static_pages/about.html.erbを修正

24.5 ログアウト魔改造

/sample_app/app/controllers/sessions_controller.rbのdestroyコントローラを修正

ここまでで何件かtestに失敗するが、全部書き換わる可能性のある箇所のみなので、全てコメントアウトにした

24.6 最後に

保存する

rails test
git add -A
git status

ログ
----------------------------
modified:   app/controllers/sessions_controller.rb
modified:   app/views/static_pages/about.html.erb
modified:   app/views/static_pages/contact.html.erb
modified:   app/views/static_pages/help.html.erb
modified:   test/controllers/static_pages_controller_test.rb
modified:   test/integration/site_layout_test.rb
----------------------------

6ファイル修正したことを確認

git commit -m "add 24"
git checkout master
修正前ファイルをブログ用に保存しておく
git merge rails-makaizou-24
git push origin master
修正後ファイルをブログ用に保存しておく

そしてherokuの操作
source <(curl -sL https://cdn.learnenough.com/heroku_install)
git push heroku master


24.6.1 修正後


リスト24.1
app/controllers/sessions_controller.rb
----------------------------
class SessionsController < ApplicationController
 #ログイン画面が表示されたときは、アクションで特になにもしない
 #/sample_app/config/routes.rbによって/loginで飛ぶ
 def new
 end
 #ログイン画面でログインボタンを押したときに実行されるアクション
 #/sample_app/config/routes.rbによって/loginから飛ぶ
 def create
   # テーブルからユーザー情報を取得する
   user = User.find_by(email: params[:session][:email].downcase)
   
   # ユーザーが存在しており、かつパスワードが合っている場合
   if user && user.authenticate(params[:session][:password])
     # ユーザーが有効化されいる場合
     if user.activated?
       log_in user
       params[:session][:remember_me] == '1' ? remember(user) : forget(user)
       flash[:success] = user.name+'さん、おかえりなさい!'
       
       #redirect_back_orとは?
       #/sample_app/app/helpers/sessions_helper.rbに定義がある
       #前ページの保存が無ければuserに飛ぶ
       #userで単数形にするとusers/1とかに飛ぶ
       #なんでかっていうとconfig/routes.rbでresource userで自動でidつきのurlになるから
       # /sample_app/app/controllers/users_controller.rbのshowアクションが呼ばれる
       redirect_back_or user
     # ユーザーが有効化されいない場合
     else
       message  = "アカウントが承認されていないようです。\n"
       message += "お手数ですが、メールアドレスからアカウントの承認をお願いします。"
       
       #再表示の場合は、flashではなくflash.nowにする
       flash.now[:warning] = message
       
       #再表示
       render 'new'
     end
   #ユーザーが存在していない場合または
   else
     flash.now[:danger] = 'メールアドレスまたはパスワードに誤りがあります'
     render 'new'
   end
 end
 #ログアウト
 def destroy
   log_out if logged_in?
   flash[:success] = 'ログアウトしました。ご利用ありがとうございました。'
   redirect_to root_url
 end
end

リスト24.2
app/views/static_pages/about.html.erb
----------------------------
<% provide(:title, "魔改造とは") %>
<h1>魔改造とは</h1>
<p>
 railsチュートリアルで出来上がった成果物を隅から隅まで魔改造し原型を無くす、をコンセプトに取り組みました。<br>
 でき上がったのはrailsチュートリアルに毛が生えたようなWebアプリケーションでした。
</p>

リスト24.3
app/views/static_pages/contact.html.erb
----------------------------
<% provide(:title, "お問い合わせ") %>
<h1>お問い合わせ</h1>
<p>2120年お問い合わせフォーム完成予定!</p>

リスト24.4
app/views/static_pages/help.html.erb
----------------------------
<% provide(:title, "ヘルプ") %>
<h1>ヘルプ</h1>
<p>にんにくラーメン食べたい</p>

リスト24.5
test/controllers/static_pages_controller_test.rb
----------------------------
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
 def setup
   @base_title = "Ruby on Rails Tutorial Sample App"
 end
 test "should get root" do
   get root_url
   assert_response :success
 end
 
 test "should get home" do
   get root_path
   assert_response :success
   assert_select "title", "Ruby on Rails Tutorial Sample App"
 end
 test "should get help" do
   get help_path
   assert_response :success
#    assert_select "title", "Help | #{@base_title}"
 end
 test "should get about" do
   get about_path
   assert_response :success
#    assert_select "title", "About | #{@base_title}"
 end
 test "should get contact" do
   get contact_path
   assert_response :success
#    assert_select "title", "Contact | #{@base_title}"
 end
end

リスト24.6
test/integration/site_layout_test.rb
----------------------------
require 'test_helper'
class SiteLayoutTest < ActionDispatch::IntegrationTest
 test "layout links" do
   get root_path
   assert_template 'static_pages/home'
   assert_select "a[href=?]", root_path, count: 2
   assert_select "a[href=?]", help_path
   assert_select "a[href=?]", about_path
   assert_select "a[href=?]", contact_path
   
   # コンタクトパス
   get contact_path
#    assert_select "title", full_title("Contact")
   
   #サインアップパス
   get signup_path
   #assert_select "title", full_title("Sign up")
 end
end


24.6.2 本章のまとめ

railsチュートリアルでwebアプリケーションの作成に必要な知識を体系的に学ぶことができました。
これをベースに知識をどんどん肉付けしていき、最終的な目標であるポートフォリオの作成を行います。

修正前

スクリーンショット 2020-01-22 00.53.08

スクリーンショット 2020-01-22 00.53.11

スクリーンショット 2020-01-22 00.53.17

スクリーンショット 2020-01-22 00.53.22

修正後

スクリーンショット 2020-01-22 00.59.28

スクリーンショット 2020-01-22 00.59.30

スクリーンショット 2020-01-22 00.59.36

スクリーンショット 2020-01-22 00.59.44


https://jun-killer-makaizou.herokuapp.com/

一旦ここで終了!続きは今のところやるつもりなし!

この記事が気に入ったらサポートをしてみませんか?