Advanced 1.設計とは？新しくプロジェクトを作成し、お問い合わせページを作ってみる

# 1. ホテルのレビューサイトを作る
- Advanced 1.設計とは？新しくプロジェクトを作成し、お問い合わせページを作ってみる
- Advanced 2.Gemを使って管理画面を作成する、設計説明
- Advanced 3.演習、各ページを自分で作ってみよう
- Advanced 4.検索を追加してみる、引き続き各ページを作ろう
- Advanced 5.bootstrapについて、デザインを追加してみる
- Advanced 6. まとめ

## 1.1. どんなサイト？全体説明
- イメージ
https://jp.hotels.com/


- トップページ(with 検索機能)
![localhost_3000_ (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53443/35526476-5e29-70a2-7026-3d2506aee17d.png)

- 地方の詳細ページ
![localhost_3000_prefectures_47 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53443/61dedf18-ab76-fc81-5ca6-0d9e762346bb.png)

- ホテルの詳細ページ
![localhost_3000_hotels_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53443/825a8597-97d9-734e-b3ff-a3759b141299.png)

- レビューの一覧
<img width="959" alt="reviews_index.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496885/67be193c-6e0b-c911-637f-b3238da484de.png">

- レビューを新規作成
<img width="960" alt="reviews_new.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496885/9994c3ec-a8c6-f0c1-c9f2-0f55b9cf095f.png">

- レビューを作る

- レビューの詳細
<img width="958" alt="reviews_show.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496885/dc9c999c-71d0-2443-3e69-db776b2681a3.png">

- 予約を新規作成
<img width="960" alt="reservations_new.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496885/b4dae88e-2f02-5f5e-1458-55a2c21c9422.png">

- 予約を作る
- お問い合わせ
![localhost_3000_contacts_new (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53443/722a0f23-f233-7bf6-ff1c-155438a1fd88.png)



## 1.2. 設計とは
RESTful APIに沿ってURLを設計する
MVCに沿ってモデルやデータベースを設計する

## 2. 今回やること
railsのプロジェクトの立ち上げ方(復習)
お問い合わせのページが必ずあるのでお問い合わせのページを作成する

# 2.1. お問い合わせページを作ってみよう
<img width="971" alt="Screen Shot 2019-12-07 at 15.19.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53443/2ee13488-7265-38a5-d71f-696ebd1d23ca.png">

ここにshowページの画像入れる



## 2.1.1 プロジェクトを作る
hotel-projectの名前でプロジェクトを作成して、アプリを起動して、Railsの初期画面が表示されるのを確認してみよう。

```
cd ~
cd projects
rails new hotel-project -B


Windowsの場合Gemfile修正ポイント
gem 'sqlite3','~> 1.3.13'
gem 'bootsnap', '~> 1.1.0'

bundle install
rails db:migrate
rails server
```

contactページ

# 2.1.2 モデルを作る
Contact


```
???
```

- カラム名には、大文字やハイフンは使わないように注意しよう。
    - E-mail　→　×
    - email　→　○

- どこから手をつければいいかわからない場合は下記を参考にしながら始めてみよう

https://qiita.com/rainbowaffro/items/03635f98091b04d9e37e#3-%E3%81%BE%E3%81%9A%E3%81%AF%E4%BC%9A%E7%A4%BE%E3%81%AE%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

# 2.1.3. routingを作成する


お問い合わせ新規作成
お問い合わせ作成
お問い合わせ終了・確認画面

```config/routes.rb
???
```

# 2.1.4. Controllerを作る

```
???
```


# 2.1.5. View作る
sublimeから右クリック

```new.html.erb
???
```

```show.html.erb
???
```


# 答え集

Contactモデルの作成

```
rails generate model Contact name:string email:string body:text
```

お問い合わせのRouting作成

GET /contacts/new
POST /contacts
GET /contacts/:id


お問い合わせのController作成

```
rails generate controller contacts
```

```app/controllers/contacts_controller.rb

def new
end

def create
end

def show
end
```


# migrateでエラーが発生する場合の対処法
- まずrails db:migrateの結果を確認
- ちゃんと走る場合はエラーが解消できる
- ちゃんと走らない場合は
    - rails db:rollbackしてrails d modelしてrails g modelからやり直す
- それでも上手く行かない場合は
    - rails d modelまたはmigrateファイルとmodelのファイルを直接sublimeから削除し、rails db:migrate:reset