2016-05-05 4 views
1

Позвольте мне сначала сказать, что я новичок в разработке веб-сайтов, поэтому оставайтесь со мной! Дело в том, что у меня есть страница, на которой рельсы собирают все комнаты из базы данных. А затем перечислите их в таблице. Все идет нормально. Но я хочу, чтобы пользователь мог нажать кнопку рядом с каждой строкой, которая забронирует комнату для пользователя.Форма внутри другой формы рельсы

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 %> 

Так что вопрос есть. Как исправить эту проблему, поэтому, когда я нажимаю книгу. Я создаю новое резервирование и собираю все данные + дату, которую выбрал пользователь. Таким образом, он уникален для каждой строки.

+0

использовать метод 'fields_for', чтобы сделать' @ all_rooms' доступным в форме –

ответ

0

Вместо всех скрытых полей, которые вы могли бы назвать каждой из кнопок отправки, как этот

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

затем внутри вашего создания действия в контроллере извлечь идентификатор номера из Params хэша, так как это будет ключом в хэше params, указывающим на «Книгу». Затем, используя идентификатор, вы можете найти связанный объект Room и создать новое резервирование, используя все, что у вас было в скрытых полях.

+0

Спасибо, это заставило меня на правильном пути! – Labba

Смежные вопросы