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アプリケーションの作成に必要な知識を体系的に学ぶことができました。
これをベースに知識をどんどん肉付けしていき、最終的な目標であるポートフォリオの作成を行います。
修正前
修正後
https://jun-killer-makaizou.herokuapp.com/
一旦ここで終了!続きは今のところやるつもりなし!
この記事が気に入ったらサポートをしてみませんか?