戻る

Rails5.0


民泊サイトの構築 Rails5.0

  (0)
2,000円

タスク4-5   予約確認

このタスクについて


タスクの内容を一部抜粋します。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてこのアプリケーションのフルコードをダウンロードすることが可能になります。




宿泊者(ゲスト)の予約確認ページを作成します。


記述追加 app\controllers\reservations_controller.rb(26行目)
   def your_trips 
    @trips = current_user.reservations.order(start_date: :asc) 
  end 



app\controllers\reservations_controller.rb
 
class ReservationsController < ApplicationController 

    before_action :authenticate_user! 
  
    def create 
      room = Room.find(params[:room_id]) 
  
      if current_user == room.user 
        flash[:alert] = "オーナーが予約することはできません。" 
      else 
  
          start_date = Date.parse(reservation_params[:start_date]) 
          end_date = Date.parse(reservation_params[:end_date]) 
          days = (end_date - start_date).to_i + 1 
  
          @reservation = current_user.reservations.build(reservation_params) 
          @reservation.room = room 
          @reservation.price = room.price 
          @reservation.total = room.price * days 
          @reservation.save 
  
          flash[:notice] = "予約が完了しました。" 
        end 
        redirect_to room 
    end 

    def your_trips 
      @trips = current_user.reservations.order(start_date: :asc) 
    end 
  
    private 
      def reservation_params 
        params.require(:reservation).permit(:start_date, :end_date) 
      end 

  end 
  



記述追加 config\routes.rb
「get '/your_trips' => 'reservations#your_trips'」の記述追加(7行目)
 
Rails.application.routes.draw do 

  #ルートをpages#homeに設定 
  root 'pages#home' 

  get 'pages/home' 
  get '/your_trips' => 'reservations#your_trips' 

  resources :users, only: [:show] 

  resources :rooms, except: [:edit] do 
    member do 
      get 'listing' 
      get 'pricing' 
      get 'description' 
      get 'photo_upload' 
      get 'amenities' 
      get 'location' 
      get 'preload' 
      get 'preview' 
    end 
    resources :photos, only: [:create, :destroy] 
    resources :reservations, only: [:create] 
  end 

  devise_for :users, 
  path: '', 
  path_names: {sign_in: 'login', sign_out: 'logout', edit: 'profile', sign_up: 'registration'}, 
  controllers: {registrations: 'registrations'} 

  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 



「app\views\reservations」フォルダに「your_trips.html.erb」ファイルを新規作成します。


app\views\reservations\your_trips.html.erb(新規作成したファイル)
 
<div class="row"> 
  <div class="col-md-3"> 
    <ul class="sidebar-list"> 
      <li class="sidebar-item"><%= link_to "ご予約の内容", your_trips_path, class: "sidebar-link active" %></li> 
    </ul> 
  </div> 
  <div class="col-md-9"> 
    <div class="panel panel-default"> 
      <div class="panel-heading"> 
        ご予約内容 
      </div> 
      <div class="panel-body"> 
        <% @trips.each do |trip| %> 
          <div class="row"> 
            <div class="col-md-3", style="white-space: nowrap"> 
              <%= I18n.l(trip.start_date, format: :full_date) %> 
            </div> 
            <div class="col-md-2"> 
              <%= link_to room_path(trip.room) do %> 
                <%= image_tag trip.room.cover_photo(:thumb) %> 
              <% end %> 
            </div> 
            <div class="col-md-5"> 
              <%= link_to trip.room.listing_name, room_path(trip.room) %><br/><br/> 
              <span> 
                <%= image_tag trip.room.user.gravatar_url, class: "img-circle avatar-small" %> 
                <%= link_to user_path(trip.room.user) do %> 
                    <%= trip.room.user.fullname %> 
                <% end %> 
              </span> 
            </div> 
            <div class="col-md-3 text-right"> 
 
            </div> 
          </div> 
          <hr/> 
        <% end %> 
      </div> 
    </div> 
  </div> 
</div> 



ブラウザ確認
宿泊者の予約確認ページです。
http://localhost:3000/your_trips




宿泊者予約確認ページ



お部屋登録者(ホスト)の予約確認ページを作成します。


記述追加 app\controllers\reservations_controller.rb(31行目)
   def your_reservations 
    @rooms = current_user.rooms 
  end 



app\controllers\reservations_controller.rb
 
class ReservationsController < ApplicationController 

    before_action :authenticate_user! 
  
    def create 
      room = Room.find(params[:room_id]) 
  
      if current_user == room.user 
        flash[:alert] = "オーナーが予約することはできません。" 
      else 
  
          start_date = Date.parse(reservation_params[:start_date]) 
          end_date = Date.parse(reservation_params[:end_date]) 
          days = (end_date - start_date).to_i + 1 
  
          @reservation = current_user.reservations.build(reservation_params) 
          @reservation.room = room 
          @reservation.price = room.price 
          @reservation.total = room.price * days 
          @reservation.save 
  
          flash[:notice] = "予約が完了しました。" 
        end 
        redirect_to room 
    end 

    # 宿泊者用予約確認 
    def your_trips 
      @trips = current_user.reservations.order(start_date: :asc) 
    end 

    #ホスト用予約確認 
    def your_reservations 
      @rooms = current_user.rooms 
    end 
    
    private 
      def reservation_params 
        params.require(:reservation).permit(:start_date, :end_date) 
      end 
  end 
  



記述追加 config\routes.rb
8行目に「get '/your_reservations' => 'reservations#your_reservations'」の記述を追加
 
Rails.application.routes.draw do 

  #ルートをpages#homeに設定 
  root 'pages#home' 

  get 'pages/home' 
  get '/your_trips' => 'reservations#your_trips' 
  get '/your_reservations' => 'reservations#your_reservations' 

  resources :users, only: [:show] 

  resources :rooms, except: [:edit] do 
    member do 
      get 'listing' 
      get 'pricing' 
      get 'description' 
      get 'photo_upload' 
      get 'amenities' 
      get 'location' 
      get 'preload' 
      get 'preview' 
    end 
    resources :photos, only: [:create, :destroy] 
    resources :reservations, only: [:create] 
  end 

  devise_for :users, 
  path: '', 
  path_names: {sign_in: 'login', sign_out: 'logout', edit: 'profile', sign_up: 'registration'}, 
  controllers: {registrations: 'registrations'} 

  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 



「app\views\reservations」フォルダに「your_reservations.html.erb」ファイルを新規作成します。


app\views\reservations\your_reservations.html.erb(新規作成したファイル)
 
<div class="row"> 
  <div class="col-md-3"> 
    <ul class="sidebar-list"> 
      <li class="sidebar-item"><%= link_to "受注予約の一覧", your_reservations_path, class: "sidebar-link active" %></li> 
      <li class="sidebar-item"><%= link_to "登録したお部屋の管理", rooms_path, class: "sidebar-link" %></li> 
      <li class="sidebar-item"><%= link_to "お部屋の新規登録", new_room_path, class: "sidebar-link" %></li> 
    </ul> 
  </div> 
  <div class="col-md-9"> 
    <div class="panel panel-default"> 
      <div class="panel-heading"> 
        受注予約の一覧 
      </div> 
      <div class="panel-body"> 
        <% @rooms.each do |room| %> 
            <% room.reservations.each do |reservation| %> 
                <div class="row"> 
                  <div class="col-md-3", style="white-space: nowrap"> 
                    <%= I18n.l(reservation.start_date, format: :full_date) %> 
                  </div> 
                  <div class="col-md-2"> 
                    <%= link_to room_path(reservation.room) do %> 
                        <%= image_tag reservation.room.cover_photo(:thumb) %> 
                    <% end %> 
                  </div> 
                  <div class="col-md-5"> 
                    <%= link_to reservation.room.listing_name, room_path(reservation.room) %><br/><br/> 
                    <span> 
                      <%= link_to user_path(reservation.user) do %> 
                        <%= image_tag reservation.user.gravatar_url, class: "img-circle avatar-small" %>&nbsp; 
                        <%= reservation.user.fullname %> 
                      <% end %> 
                    </span> 
                  </div> 
                  <div class="col-md-3 text-right"> 
                  </div> 
                </div> 
                <hr/> 
            <% end %> 
        <% end %> 
      </div> 
    </div> 
  </div> 
</div> 



ブラウザ確認
お部屋登録者(ホスト)用の予約確認ページです。
http://localhost:3000/your_reservations









この続きはプロジェクトを購入していただくことで見ることができます。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてプロジェクトを購入するとこのアプリケーションのフルコードをダウンロードすることができます。

まだレビューはありません。

民泊サイトの構築 Rails5.0

2,000円

民泊サイトを構築します。
ホストは部屋を登録し、ゲストは宿泊予約できます。
ゲストはクレジットカードで支払いをし、ホストには料金の80%が自動で口座に振り込まれます。
Googleマップによる表示、AJAX検索、日付カレンダーによる予約、フルカレンダーによる部屋管理ができます。
リアルタイムメッセージにより連絡がとれます。
予約確認メールの送信も可能。
写真のアップロード機能、アマゾンS3の利用方法も解説。
レビュー機能の実装、電話番号認証の実装方法解説。
HEROKUへのデプロイ方法を解説。
フルコードのダウンロード可能。

タスク数: 136