1

大学のプロジェクトとしてホテルの予約システムを作成したいと考えています。利用可能なすべての部屋を表示する検索フォームがあります。

<%= form_tag mainpage_path, :method => 'get' do  %>
    <p>
      <%= select_tag(:search, options_for_select([['Einzelzimmer'], ['Doppelzimmer']]))%>
      <br/>
      Arrival: <%= date_select :arrival, 'Arrival', use_short_month: true, order: [:day, :month, :year] %>  <br/>
      Departure: <%= date_select :departure, 'Departure', use_short_month: true, order: [:day, :month, :year], default:Date.tomorrow %>  <br/>
      <%params[:search] %>
      <%params[:arrival]%>
      <%params[:departure]%>
      <%= submit_tag "Search" %>
    </p>
<% end %>

これで問題がなければ、予約可能な空き部屋が表示されます。params[:arrival]しかし、 and を保存してparams[:departure]に渡したいと思いbooking formます。そうしないと、ユーザーはarrivalandのdeparture日付を再度入力する必要があるためです。それを解決するために使用できるテクニックはありますか?

前もって感謝します

4

2 に答える 2

2

到着時刻と出発時刻を検索コントローラーのインスタンス変数に保存する必要があります。これにより、ビューのレンダリング中、つまり利用可能な部屋の表示中にアクセスできるようになります。

class SearchController < ApplicationController

  def search
    @arrival   = params[:arrival]
    @departure = params[:departure]

    # Do all the searching and store them in @rooms

    respond_with @rooms
  end

end

次に、部屋を選択するためにビューをレンダリングします

<%= render :partial => 'room', :collection => @rooms %>

各部屋を予約パスにリンクし、到着日と出発日を渡します。

<%= link_to "Book room #{room.id}", book_room_path(room, :arrival => @arrival, :departure => @departure %>

#link_to にハッシュを渡すことで、GET パラメータを設定できます。これは、BookingsController で再度読み取ることができます。

これはかなり基本的な例ですが、好きなように拡張できます。

于 2013-08-05T14:38:34.570 に答える
0

提案されているように、非表示のフォーム フィールドを使用するか、完全なターンアラウンドを実行して、プロセスをいくつかのアクションを通じて状態を保持する必要があるウィザード フォームとして見ることができます。

これがあなたに適している場合は、Wickedを使用してコントローラーをウィザードに変えてください。

于 2013-08-05T14:38:02.760 に答える