2016-05-05 5 views
1

私はまずWeb開発の初心者だと言いましょう。 私は、レールがデータベースからすべての部屋を集めるページを持っているということです。そしてそれをテーブルに並べます。ここまでは順調ですね。しかし、私は、ユーザーが各列の横にあるボタンをクリックすると、そのユーザーのための部屋を予約することができます。別のフォームレールの中のフォーム

Atm私は80%働いています。事は、私は別のフォームの中にフォームを持っているので、ユーザーが本を押すと、それはofcの最後の行を予約します!どうすればこの問題を解決できますか?私はこれを修正するために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 %> 

だから質問があります。どうすればこの問題を解決できますか?新しい予約を作成し、すべてのデータ+ユーザーが選択した日付を収集します。そのため、各行に固有です。あなたはこの

<%= new_res.submit "Book", name: r.id %>

などの送信ボタンのそれぞれに名前を付けることができ

+0

'@ all_rooms'をフォームで利用できるように' fields_for'メソッドを使用してください –

答えて

0

代わりに、すべての隠しフィールドは、あなたの中にあなたのコントローラにアクションを作成paramsハッシュから部屋のIDを抽出し、それはparamsハッシュが "Book"を指し示す鍵となるためです。 idを使用すると、関連付けられたルームオブジェクトを見つけて、非表示フィールドにあるすべてのものを使用して新しい予約を作成できます。

+0

ありがとう、これは正しい軌道に乗ってくれました! – Labba

関連する問題