Railsチュートリアル：5章

Railsチュートリアルやってます。
記録をのこすのが良いっていう記事をみつけたのでやってみます。
まずはコピペした記録を張ってみます。

次の章からはもっちキチンと考察的なのもいれれるかも。

コード張るときの背景黒いのとかどうしてんのやろか。

と思ってたらプレビューで張り付けるだけだとなんとも言えない
ダサいかんじに。
なのでしらべました。

https://qiita.com/shizuma/items/8616bbe3ebe8ab0b6ca1

で、やってみたらできましたのでのせときます。

```
  <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js">
  </script>
<![endif]-->
```

_header.html.erbを作成して

```
<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="container">
    <%= link_to "sample app", '#', id: "logo" %>
    <nav>
      <ul class="nav navbar-nav navbar-right">
        <li><%= link_to "Home",   '#' %></li>
        <li><%= link_to "Help",   '#' %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>
  </div>
</header>
```
-----------------------------------------------------------
_footer.html.erbを作成して

```
<footer class="footer">
  <small>
    The <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
    by <a href="http://www.michaelhartl.com/">Michael Hartl</a>
  </small>
  <nav>
    <ul>
      <li><%= link_to "About",   '#' %></li>
      <li><%= link_to "Contact", '#' %></li>
      <li><a href="http://news.railstutorial.org/">News</a></li>
    </ul>
  </nav>
</footer>
```


```
<%= render 'layouts/footer' %>
```

```
/* footer */

footer {
  margin-top: 45px;
  padding-top: 5px;
  border-top: 1px solid #eaeaea;
  color: #777;
}

footer a {
  color: #555;
}

footer a:hover {
  color: #222;
}

footer small {
  float: left;
}

footer ul {
  float: right;
  list-style: none;
}

footer ul li {
  float: left;
  margin-left: 15px;
}

```
------------------------------------------------------------

```
@import "bootstrap-sprockets";
@import "bootstrap";

/* mixins, variables, etc. */

$gray-medium-light: #eaeaea;

/* universal */

body {
  padding-top: 60px;
}

section {
  overflow: auto;
}

textarea {
  resize: vertical;
}

.center {
  text-align: center;
  h1 {
    margin-bottom: 10px;
  }
}

/* typography */

h1, h2, h3, h4, h5, h6 {
  line-height: 1;
}

h1 {
  font-size: 3em;
  letter-spacing: -2px;
  margin-bottom: 30px;
  text-align: center;
}

h2 {
  font-size: 1.2em;
  letter-spacing: -1px;
  margin-bottom: 30px;
  text-align: center;
  font-weight: normal;
  color: $gray-light;
}

p {
  font-size: 1.1em;
  line-height: 1.7em;
}


/* header */

#logo {
  float: left;
  margin-right: 10px;
  font-size: 1.7em;
  color: white;
  text-transform: uppercase;
  letter-spacing: -1px;
  padding-top: 9px;
  font-weight: bold;
  &:hover {
    color: white;
    text-decoration: none;
  }
}

/* footer */

footer {
  margin-top: 45px;
  padding-top: 5px;
  border-top: 1px solid $gray-medium-light;
  color: $gray-light;
  a {
    color: $gray;
    &:hover {
      color: $gray-darker;
    }
  }
  small {
    float: left;
  }
  ul {
    float: right;
    list-style: none;
    li {
      float: left;
      margin-left: 15px;
    }
  }
}

```

----------------------------------------------------

```
static_pages_controller_testに追加

test "should get contact" do
    get static_pages_contact_url
    assert_response :success
    assert_select "title", "Contact | Ruby on Rails Tutorial Sample App"
  end

```
---------------------------------------------------

config/routes.rbに追加

```
get  'static_pages/contact'
```

---------------------------------------------------

```
Rails.application.routes.draw do
  root 'static_pages#home'
  get  '/help',    to: 'static_pages#help'
  get  '/about',   to: 'static_pages#about'
  get  '/contact', to: 'static_pages#contact'
end
```

-----------------------------------------------------

```
require 'test_helper'
```

```
class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  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 | Ruby on Rails Tutorial Sample App"
  end

  test "should get about" do
    get about_path
    assert_response :success
    assert_select "title", "About | Ruby on Rails Tutorial Sample App"
  end

  test "should get contact" do
    get contact_path
    assert_response :success
    assert_select "title", "Contact | Ruby on Rails Tutorial Sample App"
  end
end

```
-----------------------------------------------------------
リスト 5.30: headerパーシャルにリンクを追加する

```
app/views/layouts/_header.html.erb
<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="container">
    <%= link_to "sample app", root_path, id: "logo" %>
    <nav>
      <ul class="nav navbar-nav navbar-right">
        <li><%= link_to "Home",    root_path %></li>
        <li><%= link_to "Help",    help_path %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>
  </div>
</header>

```
-------------------------------------------------------------
リスト 5.31: footerパーシャルにリンクを追加する

```
app/views/layouts/_footer.html.erb
<footer class="footer">
  <small>
    The <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
    by <a href="http://www.michaelhartl.com/">Michael Hartl</a>
  </small>
  <nav>
    <ul>
      <li><%= link_to "About",   about_path %></li>
      <li><%= link_to "Contact", contact_path %></li>
      <li><a href="http://news.railstutorial.org/">News</a></li>
    </ul>
  </nav>
</footer>

```
---------------------------------------------------------------

```
rails generate integration_test site_layout
```

---------------------------------------------------------------
スト 5.32: レイアウトのリンクに対するテスト green

```
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
  end
end
```

-----------------------------------------------------------------
リスト 5.33: green

```
$ rails test:integration

```

--------------------------------------------------------------------
リスト 5.34: green

```

$ rails test

```

-------------------------------------------------------------------
リスト 5.38: Usersコントローラの生成 (newアクションを追加)

```
$ rails generate controller Users new
```

---------------------------------------------------------------------
リスト 5.42: green

```
$ rails test
```

---------------------------------------------------------------------
リスト 5.43: ユーザー登録ページのルート red
config/routes.rb

```
get  '/signup',  to: 'users#new'
```

---------------------------------------------------------------------
リスト 5.44: Usersコントローラのテストで名前付きルートを使うようにする green
test/controllers/users_controller_test.rb

```
get signup_path
```

----------------------------------------------------------------------
リスト 5.45: ボタンにユーザー登録ページへのリンクを追加する
app/views/static_pages/home.html.erb

```
<%= link_to "Sign up now!", signup_path, class: "btn btn-lg btn-primary" %>
```

--------------------------------------------------------------------------
リスト 5.46: 最初のユーザー登録ページ (スタブ)
app/views/users/new.html.erb

```
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<p>This will be a signup page for new users.</p>
```

---------------------------------------------------------------------------


めんどくせーーーーーー