rails 예약 기능을 붙인다. (첫 번째) has_many의 관계

환경
rails 5.0
ログイン機能 devise

 ### ​​  예약 기능을 만들기 전의 상태
· 사용자 모델로 만들고 로그인 기능을 만들고 있습니다.
・book 모델이 있어 각 유저의 읽은 책을 기록하고 있다.
・팔로우 기능을 붙이고 있다.
개인간의 대여를 위해서, 예약 기능을 붙이고 싶다.

사용자 테이블


book 테이블


우선 예약 모델을 만든다.



 
ruby:
$rails g model Reservation user:references book:references start_date:datetime end_date:datetime

reservation.rb
  belongs_to :user
  belongs_to :book
この二つは、自動生成している。

user.rb
 has_many :reservations, dependent: :destroy

book.rb
has_many :reservations

예약 모델 설명



user 모델과 book 모델의 관계는 다음 그림입니다.

routes 만들기



routes
 resources :books do
    resources :reservations
  end 

루트는 조금 특수한 쓰기를 한다.
 
 POST   /books/:book_id/reservations(.:format)          reservations#create


controller 만들기



reservations_controller
  def create
     @reservation = current_user.reservations.create(reservation_params)
     redirect_to root_path notice:"予約が完了しました"
   end

private

 def reservation_params
    params.require(:reservation).permit(:start_date, :end_date, :book_id)
  end 

view 만들기 (임시)



app/views/books/show.html.erb
<%= form_for [@book, @book.reservations.new] do |f| %>

<%= f.hidden_field :book_id, value: @book.id %>
<div class="col-md-6">
                                        <label>借りたい日</label>
                                          <%= f.text_field  :start_date,  :class => 'datepicker' %>
                                    </div>

                                    <div class="col-md-6">
                                        <label>返す日</label>
                                        <%= f.text_field :end_date, :class => 'datepicker' %>
                                    </div>
                               </div>

                                <%= f.submit "この日程で予約する", class: "btn btn-danger btn-wide" %>    


<% end %>


show.html.erb 설명



· 첫 번째 줄의 [@book, @book.reservations.new] 설명
routes를 보면,/books/:book_id/reservations(.:format)를 하고 있기 때문에 위가 된다.

그러나 최고 보기는, 불완전하다. DateTimePicker를 도입해 청소해 간다.



DateTimePicker 도입은 다음 번에
ぃ tp // 이 m / 온 / ms / 0730373d4f7b2018 36

 

좋은 웹페이지 즐겨찾기