首先我要说的是我是网络开发的初学者,所以请留意我! 问题是我有一个页面,其中rails将收集数据库中的所有房间。然后将它们列在表格中。到现在为止还挺好。但我希望用户能够单击每行旁边的按钮,这将为用户预订房间。
Atm我的工作率为80%。问题是我在另一个表单中有一个表单,所以当用户按下书时,它会预订表格中的最后一行!那么我该如何解决这个问题呢?我读到了使用javascript来解决这个问题,但作为初学者,我真的不懂javascript。
我可以将Reservation.new表单放在all_rooms表单中,它会起作用。但我还需要从用户那里获取datetimepicker的值。这就是为什么我把它放在外面。
<%= form_for(Reservation.new, remote: true, format: :js, url: {controller: "booker", action: "create"}) do |new_res| %>
<div class="calender">
<%= new_res.date_field :date, :value => (Time.now + 6.days).strftime('%Y-%m-%d') , min: 6.days.from_now, max: 90.days.from_now %>
</div>
<div class="time">
<%= new_res.time_select :start_time , {:default => {:hour => 10 , :minute => 00}, minute_step: 15 , :start_hour => 8, :end_hour => 18, :hour => 11} %>
<%= new_res.time_select :end_time , {:default => {:hour => 14 , :minute => 00}, minute_step: 15 , :start_hour => 8, :end_hour => 18, :hour => 11} %>
</div>
</div>
<div class="t_Data">
<table class ="rooms_to_book">
<tr>
<th>Namn</th>
<th>Storlek</th>
<th>Byggnad</th>
<th>Utrustning</th>
<th>Booka</th>
</tr>
<% @all_rooms.each do |r| %>
<tr>
<td><%= r.room %></td>
<td><%= r.room_size %></td>
<td><%= r.building %></td>
<td><%= r.room_description %></td>
<td>
<%= new_res.hidden_field :room, value: r.room %>
<%= new_res.hidden_field :building, value: r.building %>
<%= new_res.hidden_field :room_size, value: r.room_size %>
<%= new_res.hidden_field :room_description, value: r.room_description %>
<%= new_res.submit "Book" %>
</td>
</tr>
<% end %>
</table>
</div>
<% end %>
所以问题是。我如何解决这个问题,所以当我按书时。我创建了一个新的预订并收集了所有数据+用户选择的日期。所以它对每一行都是独一无二的。
答案 0 :(得分:0)
您可以将每个提交按钮命名为
,而不是所有隐藏字段
<%= new_res.submit "Book", name: r.id %>
然后在你的控制器中的你的创建动作中从params散列中提取房间id,因为它将是指向“Book”的params散列中的一个键。然后使用id,您可以找到关联的Room对象,并使用隐藏字段中的所有内容创建一个新的预留。