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]andparams[:departure]并将它们传递给booking form,否则用户必须再次填写arrivalanddeparture日期。有什么技术可以用来解决这个问题吗?

先感谢您

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 回答