我想为我的大学创建酒店预订系统,我有一个搜索表格,应该显示所有可用的房间。
<%= 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]
和params[:departure]
并将其传递给booking form
,否则用户必须再次填写arrival
和departure
日期。
有什么技术可以用来解决这个问题吗?
提前谢谢
答案 0 :(得分: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中再次读出。
这是一个非常基本的例子,但您可以以任何您喜欢的方式扩展它。
答案 1 :(得分:0)
根据建议,您可以使用隐藏的表单字段,或者您可以执行完整的周转操作,并将您的流程视为向导表单,该表单必须通过多个操作来执行状态。
如果这适合您,请使用Wicked将控制器变为向导。